changeset 156:c745e2cc79ee

elpy: update along with direct deps
author Jordi Gutiérrez Hermoso <jordigh@octave.org>
date Mon, 27 Feb 2017 12:17:38 -0500
parents 5ca36e6c33cc
children 2260eaac02ae
files elpa/company-0.8.12.signed elpa/company-0.8.12/.dir-locals.el elpa/company-0.8.12/.elpaignore elpa/company-0.8.12/ChangeLog elpa/company-0.8.12/NEWS.md elpa/company-0.8.12/README.md elpa/company-0.8.12/company-abbrev.el elpa/company-0.8.12/company-autoloads.el elpa/company-0.8.12/company-bbdb.el elpa/company-0.8.12/company-capf.el elpa/company-0.8.12/company-clang.el elpa/company-0.8.12/company-cmake.el elpa/company-0.8.12/company-css.el elpa/company-0.8.12/company-dabbrev-code.el elpa/company-0.8.12/company-dabbrev.el elpa/company-0.8.12/company-eclim.el elpa/company-0.8.12/company-elisp.el elpa/company-0.8.12/company-etags.el elpa/company-0.8.12/company-files.el elpa/company-0.8.12/company-gtags.el elpa/company-0.8.12/company-ispell.el elpa/company-0.8.12/company-keywords.el elpa/company-0.8.12/company-nxml.el elpa/company-0.8.12/company-oddmuse.el elpa/company-0.8.12/company-pkg.el elpa/company-0.8.12/company-pysmell.el elpa/company-0.8.12/company-ropemacs.el elpa/company-0.8.12/company-semantic.el elpa/company-0.8.12/company-template.el elpa/company-0.8.12/company-tempo.el elpa/company-0.8.12/company-xcode.el elpa/company-0.8.12/company-yasnippet.el elpa/company-0.8.12/company.el elpa/company-0.8.12/test/all.el elpa/company-0.8.12/test/async-tests.el elpa/company-0.8.12/test/clang-tests.el elpa/company-0.8.12/test/core-tests.el elpa/company-0.8.12/test/elisp-tests.el elpa/company-0.8.12/test/frontends-tests.el elpa/company-0.8.12/test/keywords-tests.el elpa/company-0.8.12/test/template-tests.el elpa/company-0.8.12/test/transformers-tests.el elpa/company-0.9.2.signed elpa/company-0.9.2/.dir-locals.el elpa/company-0.9.2/.elpaignore elpa/company-0.9.2/ChangeLog elpa/company-0.9.2/NEWS.md elpa/company-0.9.2/README.md elpa/company-0.9.2/company-abbrev.el elpa/company-0.9.2/company-autoloads.el elpa/company-0.9.2/company-bbdb.el elpa/company-0.9.2/company-capf.el elpa/company-0.9.2/company-clang.el elpa/company-0.9.2/company-cmake.el elpa/company-0.9.2/company-css.el elpa/company-0.9.2/company-dabbrev-code.el elpa/company-0.9.2/company-dabbrev.el elpa/company-0.9.2/company-eclim.el elpa/company-0.9.2/company-elisp.el elpa/company-0.9.2/company-etags.el elpa/company-0.9.2/company-files.el elpa/company-0.9.2/company-gtags.el elpa/company-0.9.2/company-ispell.el elpa/company-0.9.2/company-keywords.el elpa/company-0.9.2/company-nxml.el elpa/company-0.9.2/company-oddmuse.el elpa/company-0.9.2/company-pkg.el elpa/company-0.9.2/company-semantic.el elpa/company-0.9.2/company-template.el elpa/company-0.9.2/company-tempo.el elpa/company-0.9.2/company-xcode.el elpa/company-0.9.2/company-yasnippet.el elpa/company-0.9.2/company.el elpa/company-0.9.2/test/all.el elpa/company-0.9.2/test/async-tests.el elpa/company-0.9.2/test/bbdb-tests.el elpa/company-0.9.2/test/clang-tests.el elpa/company-0.9.2/test/core-tests.el elpa/company-0.9.2/test/elisp-tests.el elpa/company-0.9.2/test/files-tests.el elpa/company-0.9.2/test/frontends-tests.el elpa/company-0.9.2/test/keywords-tests.el elpa/company-0.9.2/test/template-tests.el elpa/company-0.9.2/test/transformers-tests.el elpa/elpy-1.12.0/NEWS.rst elpa/elpy-1.12.0/elpy-autoloads.el elpa/elpy-1.12.0/elpy-pkg.el elpa/elpy-1.12.0/elpy-refactor.el elpa/elpy-1.12.0/elpy.el elpa/elpy-1.12.0/elpy/__init__.py elpa/elpy-1.12.0/elpy/__main__.py elpa/elpy-1.12.0/elpy/auto_pep8.py elpa/elpy-1.12.0/elpy/compat.py elpa/elpy-1.12.0/elpy/impmagic.py elpa/elpy-1.12.0/elpy/jedibackend.py elpa/elpy-1.12.0/elpy/pydocutils.py elpa/elpy-1.12.0/elpy/refactor.py elpa/elpy-1.12.0/elpy/ropebackend.py elpa/elpy-1.12.0/elpy/rpc.py elpa/elpy-1.12.0/elpy/server.py elpa/elpy-1.12.0/elpy/tests/__init__.py elpa/elpy-1.12.0/elpy/tests/compat.py elpa/elpy-1.12.0/elpy/tests/support.py elpa/elpy-1.12.0/elpy/tests/test_auto_pep8.py elpa/elpy-1.12.0/elpy/tests/test_impmagic.py elpa/elpy-1.12.0/elpy/tests/test_jedibackend.py elpa/elpy-1.12.0/elpy/tests/test_pydocutils.py elpa/elpy-1.12.0/elpy/tests/test_refactor.py elpa/elpy-1.12.0/elpy/tests/test_ropebackend.py elpa/elpy-1.12.0/elpy/tests/test_rpc.py elpa/elpy-1.12.0/elpy/tests/test_server.py elpa/elpy-1.12.0/elpy/tests/test_support.py elpa/elpy-1.12.0/elpy/tests/test_yapf.py elpa/elpy-1.12.0/elpy/yapfutil.py elpa/elpy-1.12.0/snippets/python-mode/.yas-setup.el elpa/elpy-1.12.0/snippets/python-mode/__abs__ elpa/elpy-1.12.0/snippets/python-mode/__add__ elpa/elpy-1.12.0/snippets/python-mode/__and__ elpa/elpy-1.12.0/snippets/python-mode/__bool__ elpa/elpy-1.12.0/snippets/python-mode/__call__ elpa/elpy-1.12.0/snippets/python-mode/__cmp__ elpa/elpy-1.12.0/snippets/python-mode/__coerce__ elpa/elpy-1.12.0/snippets/python-mode/__complex__ elpa/elpy-1.12.0/snippets/python-mode/__contains__ elpa/elpy-1.12.0/snippets/python-mode/__del__ elpa/elpy-1.12.0/snippets/python-mode/__delattr__ elpa/elpy-1.12.0/snippets/python-mode/__delete__ elpa/elpy-1.12.0/snippets/python-mode/__delitem__ elpa/elpy-1.12.0/snippets/python-mode/__div__ elpa/elpy-1.12.0/snippets/python-mode/__divmod__ elpa/elpy-1.12.0/snippets/python-mode/__enter__ elpa/elpy-1.12.0/snippets/python-mode/__eq__ elpa/elpy-1.12.0/snippets/python-mode/__exit__ elpa/elpy-1.12.0/snippets/python-mode/__float__ elpa/elpy-1.12.0/snippets/python-mode/__floordiv__ elpa/elpy-1.12.0/snippets/python-mode/__ge__ elpa/elpy-1.12.0/snippets/python-mode/__get__ elpa/elpy-1.12.0/snippets/python-mode/__getattr__ elpa/elpy-1.12.0/snippets/python-mode/__getattribute__ elpa/elpy-1.12.0/snippets/python-mode/__getitem__ elpa/elpy-1.12.0/snippets/python-mode/__gt__ elpa/elpy-1.12.0/snippets/python-mode/__hash__ elpa/elpy-1.12.0/snippets/python-mode/__hex__ elpa/elpy-1.12.0/snippets/python-mode/__iadd__ elpa/elpy-1.12.0/snippets/python-mode/__iand__ elpa/elpy-1.12.0/snippets/python-mode/__idiv__ elpa/elpy-1.12.0/snippets/python-mode/__ifloordiv__ elpa/elpy-1.12.0/snippets/python-mode/__ilshift__ elpa/elpy-1.12.0/snippets/python-mode/__imod__ elpa/elpy-1.12.0/snippets/python-mode/__imul__ elpa/elpy-1.12.0/snippets/python-mode/__index__ elpa/elpy-1.12.0/snippets/python-mode/__init__ elpa/elpy-1.12.0/snippets/python-mode/__instancecheck__ elpa/elpy-1.12.0/snippets/python-mode/__int__ elpa/elpy-1.12.0/snippets/python-mode/__invert__ elpa/elpy-1.12.0/snippets/python-mode/__ior__ elpa/elpy-1.12.0/snippets/python-mode/__ipow__ elpa/elpy-1.12.0/snippets/python-mode/__irshift__ elpa/elpy-1.12.0/snippets/python-mode/__isub__ elpa/elpy-1.12.0/snippets/python-mode/__iter__ elpa/elpy-1.12.0/snippets/python-mode/__itruediv__ elpa/elpy-1.12.0/snippets/python-mode/__ixor__ elpa/elpy-1.12.0/snippets/python-mode/__le__ elpa/elpy-1.12.0/snippets/python-mode/__len__ elpa/elpy-1.12.0/snippets/python-mode/__long__ elpa/elpy-1.12.0/snippets/python-mode/__lshift__ elpa/elpy-1.12.0/snippets/python-mode/__lt__ elpa/elpy-1.12.0/snippets/python-mode/__mod__ elpa/elpy-1.12.0/snippets/python-mode/__mul__ elpa/elpy-1.12.0/snippets/python-mode/__ne__ elpa/elpy-1.12.0/snippets/python-mode/__neg__ elpa/elpy-1.12.0/snippets/python-mode/__new__ elpa/elpy-1.12.0/snippets/python-mode/__nonzero__ elpa/elpy-1.12.0/snippets/python-mode/__oct__ elpa/elpy-1.12.0/snippets/python-mode/__or__ elpa/elpy-1.12.0/snippets/python-mode/__pos__ elpa/elpy-1.12.0/snippets/python-mode/__pow__ elpa/elpy-1.12.0/snippets/python-mode/__radd__ elpa/elpy-1.12.0/snippets/python-mode/__rand__ elpa/elpy-1.12.0/snippets/python-mode/__rdivmod__ elpa/elpy-1.12.0/snippets/python-mode/__repr__ elpa/elpy-1.12.0/snippets/python-mode/__reversed__ elpa/elpy-1.12.0/snippets/python-mode/__rfloordiv__ elpa/elpy-1.12.0/snippets/python-mode/__rlshift__ elpa/elpy-1.12.0/snippets/python-mode/__rmod__ elpa/elpy-1.12.0/snippets/python-mode/__rmul__ elpa/elpy-1.12.0/snippets/python-mode/__ror__ elpa/elpy-1.12.0/snippets/python-mode/__rpow__ elpa/elpy-1.12.0/snippets/python-mode/__rrshift__ elpa/elpy-1.12.0/snippets/python-mode/__rshift__ elpa/elpy-1.12.0/snippets/python-mode/__rsub__ elpa/elpy-1.12.0/snippets/python-mode/__rtruediv__ elpa/elpy-1.12.0/snippets/python-mode/__rxor__ elpa/elpy-1.12.0/snippets/python-mode/__set__ elpa/elpy-1.12.0/snippets/python-mode/__setattr__ elpa/elpy-1.12.0/snippets/python-mode/__setitem__ elpa/elpy-1.12.0/snippets/python-mode/__slots__ elpa/elpy-1.12.0/snippets/python-mode/__str__ elpa/elpy-1.12.0/snippets/python-mode/__sub__ elpa/elpy-1.12.0/snippets/python-mode/__subclasscheck__ elpa/elpy-1.12.0/snippets/python-mode/__truediv__ elpa/elpy-1.12.0/snippets/python-mode/__unicode__ elpa/elpy-1.12.0/snippets/python-mode/__xor__ elpa/elpy-1.12.0/snippets/python-mode/ase elpa/elpy-1.12.0/snippets/python-mode/asne elpa/elpy-1.12.0/snippets/python-mode/asr elpa/elpy-1.12.0/snippets/python-mode/class elpa/elpy-1.12.0/snippets/python-mode/defs elpa/elpy-1.12.0/snippets/python-mode/enc elpa/elpy-1.12.0/snippets/python-mode/env elpa/elpy-1.12.0/snippets/python-mode/from elpa/elpy-1.12.0/snippets/python-mode/pdb elpa/elpy-1.12.0/snippets/python-mode/py3 elpa/elpy-1.12.0/snippets/python-mode/super elpa/elpy-1.14.1/NEWS.rst elpa/elpy-1.14.1/elpy-autoloads.el elpa/elpy-1.14.1/elpy-django.el elpa/elpy-1.14.1/elpy-pkg.el elpa/elpy-1.14.1/elpy-refactor.el elpa/elpy-1.14.1/elpy.el elpa/elpy-1.14.1/elpy/__init__.py elpa/elpy-1.14.1/elpy/__main__.py elpa/elpy-1.14.1/elpy/auto_pep8.py elpa/elpy-1.14.1/elpy/compat.py elpa/elpy-1.14.1/elpy/impmagic.py elpa/elpy-1.14.1/elpy/jedibackend.py elpa/elpy-1.14.1/elpy/pydocutils.py elpa/elpy-1.14.1/elpy/refactor.py elpa/elpy-1.14.1/elpy/ropebackend.py elpa/elpy-1.14.1/elpy/rpc.py elpa/elpy-1.14.1/elpy/server.py elpa/elpy-1.14.1/elpy/tests/__init__.py elpa/elpy-1.14.1/elpy/tests/compat.py elpa/elpy-1.14.1/elpy/tests/support.py elpa/elpy-1.14.1/elpy/tests/test_auto_pep8.py elpa/elpy-1.14.1/elpy/tests/test_impmagic.py elpa/elpy-1.14.1/elpy/tests/test_jedibackend.py elpa/elpy-1.14.1/elpy/tests/test_pydocutils.py elpa/elpy-1.14.1/elpy/tests/test_refactor.py elpa/elpy-1.14.1/elpy/tests/test_ropebackend.py elpa/elpy-1.14.1/elpy/tests/test_rpc.py elpa/elpy-1.14.1/elpy/tests/test_server.py elpa/elpy-1.14.1/elpy/tests/test_support.py elpa/elpy-1.14.1/elpy/tests/test_yapf.py elpa/elpy-1.14.1/elpy/yapfutil.py elpa/elpy-1.14.1/snippets/python-mode/.yas-setup.el elpa/elpy-1.14.1/snippets/python-mode/__abs__ elpa/elpy-1.14.1/snippets/python-mode/__add__ elpa/elpy-1.14.1/snippets/python-mode/__and__ elpa/elpy-1.14.1/snippets/python-mode/__bool__ elpa/elpy-1.14.1/snippets/python-mode/__call__ elpa/elpy-1.14.1/snippets/python-mode/__cmp__ elpa/elpy-1.14.1/snippets/python-mode/__coerce__ elpa/elpy-1.14.1/snippets/python-mode/__complex__ elpa/elpy-1.14.1/snippets/python-mode/__contains__ elpa/elpy-1.14.1/snippets/python-mode/__del__ elpa/elpy-1.14.1/snippets/python-mode/__delattr__ elpa/elpy-1.14.1/snippets/python-mode/__delete__ elpa/elpy-1.14.1/snippets/python-mode/__delitem__ elpa/elpy-1.14.1/snippets/python-mode/__div__ elpa/elpy-1.14.1/snippets/python-mode/__divmod__ elpa/elpy-1.14.1/snippets/python-mode/__enter__ elpa/elpy-1.14.1/snippets/python-mode/__eq__ elpa/elpy-1.14.1/snippets/python-mode/__exit__ elpa/elpy-1.14.1/snippets/python-mode/__float__ elpa/elpy-1.14.1/snippets/python-mode/__floordiv__ elpa/elpy-1.14.1/snippets/python-mode/__ge__ elpa/elpy-1.14.1/snippets/python-mode/__get__ elpa/elpy-1.14.1/snippets/python-mode/__getattr__ elpa/elpy-1.14.1/snippets/python-mode/__getattribute__ elpa/elpy-1.14.1/snippets/python-mode/__getitem__ elpa/elpy-1.14.1/snippets/python-mode/__gt__ elpa/elpy-1.14.1/snippets/python-mode/__hash__ elpa/elpy-1.14.1/snippets/python-mode/__hex__ elpa/elpy-1.14.1/snippets/python-mode/__iadd__ elpa/elpy-1.14.1/snippets/python-mode/__iand__ elpa/elpy-1.14.1/snippets/python-mode/__idiv__ elpa/elpy-1.14.1/snippets/python-mode/__ifloordiv__ elpa/elpy-1.14.1/snippets/python-mode/__ilshift__ elpa/elpy-1.14.1/snippets/python-mode/__imod__ elpa/elpy-1.14.1/snippets/python-mode/__imul__ elpa/elpy-1.14.1/snippets/python-mode/__index__ elpa/elpy-1.14.1/snippets/python-mode/__init__ elpa/elpy-1.14.1/snippets/python-mode/__instancecheck__ elpa/elpy-1.14.1/snippets/python-mode/__int__ elpa/elpy-1.14.1/snippets/python-mode/__invert__ elpa/elpy-1.14.1/snippets/python-mode/__ior__ elpa/elpy-1.14.1/snippets/python-mode/__ipow__ elpa/elpy-1.14.1/snippets/python-mode/__irshift__ elpa/elpy-1.14.1/snippets/python-mode/__isub__ elpa/elpy-1.14.1/snippets/python-mode/__iter__ elpa/elpy-1.14.1/snippets/python-mode/__itruediv__ elpa/elpy-1.14.1/snippets/python-mode/__ixor__ elpa/elpy-1.14.1/snippets/python-mode/__le__ elpa/elpy-1.14.1/snippets/python-mode/__len__ elpa/elpy-1.14.1/snippets/python-mode/__long__ elpa/elpy-1.14.1/snippets/python-mode/__lshift__ elpa/elpy-1.14.1/snippets/python-mode/__lt__ elpa/elpy-1.14.1/snippets/python-mode/__mod__ elpa/elpy-1.14.1/snippets/python-mode/__mul__ elpa/elpy-1.14.1/snippets/python-mode/__ne__ elpa/elpy-1.14.1/snippets/python-mode/__neg__ elpa/elpy-1.14.1/snippets/python-mode/__new__ elpa/elpy-1.14.1/snippets/python-mode/__nonzero__ elpa/elpy-1.14.1/snippets/python-mode/__oct__ elpa/elpy-1.14.1/snippets/python-mode/__or__ elpa/elpy-1.14.1/snippets/python-mode/__pos__ elpa/elpy-1.14.1/snippets/python-mode/__pow__ elpa/elpy-1.14.1/snippets/python-mode/__radd__ elpa/elpy-1.14.1/snippets/python-mode/__rand__ elpa/elpy-1.14.1/snippets/python-mode/__rdivmod__ elpa/elpy-1.14.1/snippets/python-mode/__repr__ elpa/elpy-1.14.1/snippets/python-mode/__reversed__ elpa/elpy-1.14.1/snippets/python-mode/__rfloordiv__ elpa/elpy-1.14.1/snippets/python-mode/__rlshift__ elpa/elpy-1.14.1/snippets/python-mode/__rmod__ elpa/elpy-1.14.1/snippets/python-mode/__rmul__ elpa/elpy-1.14.1/snippets/python-mode/__ror__ elpa/elpy-1.14.1/snippets/python-mode/__rpow__ elpa/elpy-1.14.1/snippets/python-mode/__rrshift__ elpa/elpy-1.14.1/snippets/python-mode/__rshift__ elpa/elpy-1.14.1/snippets/python-mode/__rsub__ elpa/elpy-1.14.1/snippets/python-mode/__rtruediv__ elpa/elpy-1.14.1/snippets/python-mode/__rxor__ elpa/elpy-1.14.1/snippets/python-mode/__set__ elpa/elpy-1.14.1/snippets/python-mode/__setattr__ elpa/elpy-1.14.1/snippets/python-mode/__setitem__ elpa/elpy-1.14.1/snippets/python-mode/__slots__ elpa/elpy-1.14.1/snippets/python-mode/__str__ elpa/elpy-1.14.1/snippets/python-mode/__sub__ elpa/elpy-1.14.1/snippets/python-mode/__subclasscheck__ elpa/elpy-1.14.1/snippets/python-mode/__truediv__ elpa/elpy-1.14.1/snippets/python-mode/__unicode__ elpa/elpy-1.14.1/snippets/python-mode/__xor__ elpa/elpy-1.14.1/snippets/python-mode/ase elpa/elpy-1.14.1/snippets/python-mode/asne elpa/elpy-1.14.1/snippets/python-mode/asr elpa/elpy-1.14.1/snippets/python-mode/class elpa/elpy-1.14.1/snippets/python-mode/defs elpa/elpy-1.14.1/snippets/python-mode/enc elpa/elpy-1.14.1/snippets/python-mode/env elpa/elpy-1.14.1/snippets/python-mode/from elpa/elpy-1.14.1/snippets/python-mode/pdb elpa/elpy-1.14.1/snippets/python-mode/py3 elpa/elpy-1.14.1/snippets/python-mode/super elpa/elpy-readme.txt elpa/find-file-in-project-3.3/find-file-in-project-autoloads.el elpa/find-file-in-project-3.3/find-file-in-project-pkg.el elpa/find-file-in-project-3.3/find-file-in-project.el elpa/find-file-in-project-5.2.7/find-file-in-project-autoloads.el elpa/find-file-in-project-5.2.7/find-file-in-project-pkg.el elpa/find-file-in-project-5.2.7/find-file-in-project.el elpa/ivy-0.8.0.signed elpa/ivy-0.8.0/.dir-locals.el elpa/ivy-0.8.0/.travis.yml elpa/ivy-0.8.0/ChangeLog elpa/ivy-0.8.0/Makefile elpa/ivy-0.8.0/README.md elpa/ivy-0.8.0/colir.el elpa/ivy-0.8.0/counsel.el elpa/ivy-0.8.0/doc/Changelog.org elpa/ivy-0.8.0/doc/ivy-help.org elpa/ivy-0.8.0/doc/ivy-ox.el elpa/ivy-0.8.0/doc/ivy.org elpa/ivy-0.8.0/doc/ivy.texi elpa/ivy-0.8.0/ivy-autoloads.el elpa/ivy-0.8.0/ivy-hydra.el elpa/ivy-0.8.0/ivy-pkg.el elpa/ivy-0.8.0/ivy-test.el elpa/ivy-0.8.0/ivy.el elpa/ivy-0.8.0/swiper.el elpa/pyvenv-1.10/pyvenv-autoloads.el elpa/pyvenv-1.10/pyvenv-pkg.el elpa/pyvenv-1.10/pyvenv.el elpa/pyvenv-1.7/pyvenv-autoloads.el elpa/pyvenv-1.7/pyvenv-pkg.el elpa/pyvenv-1.7/pyvenv.el elpa/s-1.11.0/s-autoloads.el elpa/s-1.11.0/s-pkg.el elpa/s-1.11.0/s.el elpa/yasnippet-0.11.0.signed elpa/yasnippet-0.11.0/.gitmodules elpa/yasnippet-0.11.0/.travis.yml elpa/yasnippet-0.11.0/CONTRIBUTING.md elpa/yasnippet-0.11.0/ChangeLog elpa/yasnippet-0.11.0/NEWS elpa/yasnippet-0.11.0/README elpa/yasnippet-0.11.0/README.mdown elpa/yasnippet-0.11.0/Rakefile elpa/yasnippet-0.11.0/doc/.nosearch elpa/yasnippet-0.11.0/doc/faq.org elpa/yasnippet-0.11.0/doc/images/bg-content-left.png elpa/yasnippet-0.11.0/doc/images/bg-content-right.png elpa/yasnippet-0.11.0/doc/images/bg-content.png elpa/yasnippet-0.11.0/doc/images/bg-navigation-item-hover.png elpa/yasnippet-0.11.0/doc/images/bg-navigation-item.png elpa/yasnippet-0.11.0/doc/images/bg-navigation.png elpa/yasnippet-0.11.0/doc/images/body.png elpa/yasnippet-0.11.0/doc/images/customization-group.png elpa/yasnippet-0.11.0/doc/images/dropdown-menu.png elpa/yasnippet-0.11.0/doc/images/external.png elpa/yasnippet-0.11.0/doc/images/ido-menu.png elpa/yasnippet-0.11.0/doc/images/menu-1.png elpa/yasnippet-0.11.0/doc/images/menu-2.png elpa/yasnippet-0.11.0/doc/images/menu-groups.png elpa/yasnippet-0.11.0/doc/images/menu-parent.png elpa/yasnippet-0.11.0/doc/images/minor-mode-indicator.png elpa/yasnippet-0.11.0/doc/images/x-menu.png elpa/yasnippet-0.11.0/doc/index.org elpa/yasnippet-0.11.0/doc/nav-menu.html.inc elpa/yasnippet-0.11.0/doc/org-setup.inc elpa/yasnippet-0.11.0/doc/snippet-development.org elpa/yasnippet-0.11.0/doc/snippet-expansion.org elpa/yasnippet-0.11.0/doc/snippet-menu.org elpa/yasnippet-0.11.0/doc/snippet-organization.org elpa/yasnippet-0.11.0/doc/snippet-reference.org elpa/yasnippet-0.11.0/doc/stylesheets/manual.css elpa/yasnippet-0.11.0/doc/stylesheets/styles.css elpa/yasnippet-0.11.0/doc/yas-doc-helper.el elpa/yasnippet-0.11.0/snippets/c++-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/c++-mode/beginend elpa/yasnippet-0.11.0/snippets/c++-mode/class elpa/yasnippet-0.11.0/snippets/c++-mode/ns elpa/yasnippet-0.11.0/snippets/c++-mode/template elpa/yasnippet-0.11.0/snippets/c++-mode/using elpa/yasnippet-0.11.0/snippets/c-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/c-mode/fopen elpa/yasnippet-0.11.0/snippets/c-mode/printf elpa/yasnippet-0.11.0/snippets/cc-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/cc-mode/do elpa/yasnippet-0.11.0/snippets/cc-mode/for elpa/yasnippet-0.11.0/snippets/cc-mode/if elpa/yasnippet-0.11.0/snippets/cc-mode/inc elpa/yasnippet-0.11.0/snippets/cc-mode/inc.1 elpa/yasnippet-0.11.0/snippets/cc-mode/main elpa/yasnippet-0.11.0/snippets/cc-mode/once elpa/yasnippet-0.11.0/snippets/cc-mode/struct elpa/yasnippet-0.11.0/snippets/cperl-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/csharp-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/csharp-mode/attrib elpa/yasnippet-0.11.0/snippets/csharp-mode/attrib.1 elpa/yasnippet-0.11.0/snippets/csharp-mode/attrib.2 elpa/yasnippet-0.11.0/snippets/csharp-mode/class elpa/yasnippet-0.11.0/snippets/csharp-mode/comment elpa/yasnippet-0.11.0/snippets/csharp-mode/comment.1 elpa/yasnippet-0.11.0/snippets/csharp-mode/comment.2 elpa/yasnippet-0.11.0/snippets/csharp-mode/comment.3 elpa/yasnippet-0.11.0/snippets/csharp-mode/method elpa/yasnippet-0.11.0/snippets/csharp-mode/namespace elpa/yasnippet-0.11.0/snippets/csharp-mode/prop elpa/yasnippet-0.11.0/snippets/csharp-mode/region elpa/yasnippet-0.11.0/snippets/csharp-mode/using elpa/yasnippet-0.11.0/snippets/csharp-mode/using.1 elpa/yasnippet-0.11.0/snippets/csharp-mode/using.2 elpa/yasnippet-0.11.0/snippets/css-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/css-mode/bg elpa/yasnippet-0.11.0/snippets/css-mode/bg.1 elpa/yasnippet-0.11.0/snippets/css-mode/bor elpa/yasnippet-0.11.0/snippets/css-mode/cl elpa/yasnippet-0.11.0/snippets/css-mode/disp.block elpa/yasnippet-0.11.0/snippets/css-mode/disp.inline elpa/yasnippet-0.11.0/snippets/css-mode/disp.none elpa/yasnippet-0.11.0/snippets/css-mode/ff elpa/yasnippet-0.11.0/snippets/css-mode/fs elpa/yasnippet-0.11.0/snippets/css-mode/mar.bottom elpa/yasnippet-0.11.0/snippets/css-mode/mar.left elpa/yasnippet-0.11.0/snippets/css-mode/mar.mar elpa/yasnippet-0.11.0/snippets/css-mode/mar.margin elpa/yasnippet-0.11.0/snippets/css-mode/mar.right elpa/yasnippet-0.11.0/snippets/css-mode/mar.top elpa/yasnippet-0.11.0/snippets/css-mode/pad.bottom elpa/yasnippet-0.11.0/snippets/css-mode/pad.left elpa/yasnippet-0.11.0/snippets/css-mode/pad.pad elpa/yasnippet-0.11.0/snippets/css-mode/pad.padding elpa/yasnippet-0.11.0/snippets/css-mode/pad.right elpa/yasnippet-0.11.0/snippets/css-mode/pad.top elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/.read_me elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/add-hook.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/and.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/append.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/apply.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/aref.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/aset.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/assq.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/autoload.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/backward-char.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/beginning-of-line.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/bounds-of-thing-at-point.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-file-name.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-modified-p.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-substring-no-properties.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-substring.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/car.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/cdr.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/concat.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/cond.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/condition-case.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/cons.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/consp.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/copy-directory.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/copy-file.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/current-buffer.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/custom-autoload.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defalias.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defcustom.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/define-key.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defsubst.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defun.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defvar.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-char.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-directory.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-file.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-region.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/directory-files.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/dolist.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/end-of-line.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/eq.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/equal.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/error.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/expand-file-name.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/f.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/fboundp.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-directory.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-extension.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-nondirectory.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-sans-extension.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-relative-name.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/find-file.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/format.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/forward-char.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/forward-line.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/funcall.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/function.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/get.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/global-set-key.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/goto-char.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/if.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/insert-file-contents.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/insert.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/interactive.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/kbd.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/kill-buffer.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/lambda.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/length.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/let.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/line-beginning-position.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/line-end-position.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/list.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/looking-at.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/make-directory.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/make-local-variable.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/mapc.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/mapcar.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/match-beginning.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/match-end.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/match-string.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/memq.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/message.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/not.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/nth.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/null.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/number-to-string.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/or.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/point-max.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/point-min.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/point.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/princ.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/print.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/progn.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/push.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/put.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/re-search-backward.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/re-search-forward.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/region-active-p.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/region-beginning.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/region-end.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/rename-file.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/repeat.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/replace-regexp-in-string.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/replace-regexp.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/require.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/save-buffer.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/save-excursion.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-backward-regexp.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-backward.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-forward-regexp.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-forward.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set-buffer.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set-file-modes.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set-mark.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/setq.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/skip-chars-backward.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/skip-chars-forward.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/split-string.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string-match.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string-to-number.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string=.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/stringp.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/substring.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/thing-at-point.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/unless.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/vector.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/when.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/while.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/widget-get.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/with-current-buffer.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-dired.process_marked.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-file.process.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-file.read-lines.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-find-replace.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-grabstring.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-grabthing.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-traverse_dir.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-word-or-region.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/y-or-n-p.yasnippet elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/yes-or-no-p.yasnippet elpa/yasnippet-0.11.0/snippets/erlang-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/erlang-mode/after elpa/yasnippet-0.11.0/snippets/erlang-mode/begin elpa/yasnippet-0.11.0/snippets/erlang-mode/beh elpa/yasnippet-0.11.0/snippets/erlang-mode/case elpa/yasnippet-0.11.0/snippets/erlang-mode/compile elpa/yasnippet-0.11.0/snippets/erlang-mode/def elpa/yasnippet-0.11.0/snippets/erlang-mode/exp elpa/yasnippet-0.11.0/snippets/erlang-mode/fun elpa/yasnippet-0.11.0/snippets/erlang-mode/if elpa/yasnippet-0.11.0/snippets/erlang-mode/ifdef elpa/yasnippet-0.11.0/snippets/erlang-mode/ifndef elpa/yasnippet-0.11.0/snippets/erlang-mode/imp elpa/yasnippet-0.11.0/snippets/erlang-mode/inc elpa/yasnippet-0.11.0/snippets/erlang-mode/inc.lib elpa/yasnippet-0.11.0/snippets/erlang-mode/loop elpa/yasnippet-0.11.0/snippets/erlang-mode/mod elpa/yasnippet-0.11.0/snippets/erlang-mode/rcv elpa/yasnippet-0.11.0/snippets/erlang-mode/rcv.after elpa/yasnippet-0.11.0/snippets/erlang-mode/rec elpa/yasnippet-0.11.0/snippets/erlang-mode/try elpa/yasnippet-0.11.0/snippets/erlang-mode/undef elpa/yasnippet-0.11.0/snippets/f90-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/f90-mode/au elpa/yasnippet-0.11.0/snippets/f90-mode/bd elpa/yasnippet-0.11.0/snippets/f90-mode/c elpa/yasnippet-0.11.0/snippets/f90-mode/ch elpa/yasnippet-0.11.0/snippets/f90-mode/cx elpa/yasnippet-0.11.0/snippets/f90-mode/dc elpa/yasnippet-0.11.0/snippets/f90-mode/do elpa/yasnippet-0.11.0/snippets/f90-mode/dp elpa/yasnippet-0.11.0/snippets/f90-mode/eq elpa/yasnippet-0.11.0/snippets/f90-mode/ib elpa/yasnippet-0.11.0/snippets/f90-mode/ic elpa/yasnippet-0.11.0/snippets/f90-mode/ich elpa/yasnippet-0.11.0/snippets/f90-mode/if elpa/yasnippet-0.11.0/snippets/f90-mode/ii elpa/yasnippet-0.11.0/snippets/f90-mode/il elpa/yasnippet-0.11.0/snippets/f90-mode/in elpa/yasnippet-0.11.0/snippets/f90-mode/inc elpa/yasnippet-0.11.0/snippets/f90-mode/intr elpa/yasnippet-0.11.0/snippets/f90-mode/ir elpa/yasnippet-0.11.0/snippets/f90-mode/l elpa/yasnippet-0.11.0/snippets/f90-mode/pa elpa/yasnippet-0.11.0/snippets/f90-mode/pr elpa/yasnippet-0.11.0/snippets/f90-mode/re elpa/yasnippet-0.11.0/snippets/f90-mode/st elpa/yasnippet-0.11.0/snippets/f90-mode/su elpa/yasnippet-0.11.0/snippets/f90-mode/wr elpa/yasnippet-0.11.0/snippets/html-mode/.yas-make-groups elpa/yasnippet-0.11.0/snippets/html-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/html-mode/b.yasnippet elpa/yasnippet-0.11.0/snippets/html-mode/body elpa/yasnippet-0.11.0/snippets/html-mode/br elpa/yasnippet-0.11.0/snippets/html-mode/code elpa/yasnippet-0.11.0/snippets/html-mode/code.class elpa/yasnippet-0.11.0/snippets/html-mode/div elpa/yasnippet-0.11.0/snippets/html-mode/div.class elpa/yasnippet-0.11.0/snippets/html-mode/div.id elpa/yasnippet-0.11.0/snippets/html-mode/div.id-class elpa/yasnippet-0.11.0/snippets/html-mode/dov elpa/yasnippet-0.11.0/snippets/html-mode/form elpa/yasnippet-0.11.0/snippets/html-mode/head elpa/yasnippet-0.11.0/snippets/html-mode/header/h1 elpa/yasnippet-0.11.0/snippets/html-mode/header/h2 elpa/yasnippet-0.11.0/snippets/html-mode/header/h3 elpa/yasnippet-0.11.0/snippets/html-mode/header/h4 elpa/yasnippet-0.11.0/snippets/html-mode/header/h5 elpa/yasnippet-0.11.0/snippets/html-mode/header/h6 elpa/yasnippet-0.11.0/snippets/html-mode/hr elpa/yasnippet-0.11.0/snippets/html-mode/href elpa/yasnippet-0.11.0/snippets/html-mode/html elpa/yasnippet-0.11.0/snippets/html-mode/html.xmlns elpa/yasnippet-0.11.0/snippets/html-mode/i.yasnippet elpa/yasnippet-0.11.0/snippets/html-mode/img elpa/yasnippet-0.11.0/snippets/html-mode/input elpa/yasnippet-0.11.0/snippets/html-mode/link.stylesheet elpa/yasnippet-0.11.0/snippets/html-mode/link.stylesheet-ie elpa/yasnippet-0.11.0/snippets/html-mode/list/dd elpa/yasnippet-0.11.0/snippets/html-mode/list/dl elpa/yasnippet-0.11.0/snippets/html-mode/list/dl.id elpa/yasnippet-0.11.0/snippets/html-mode/list/dt elpa/yasnippet-0.11.0/snippets/html-mode/list/li elpa/yasnippet-0.11.0/snippets/html-mode/list/li.class elpa/yasnippet-0.11.0/snippets/html-mode/list/ol elpa/yasnippet-0.11.0/snippets/html-mode/list/ol.class elpa/yasnippet-0.11.0/snippets/html-mode/list/ol.id elpa/yasnippet-0.11.0/snippets/html-mode/list/ul elpa/yasnippet-0.11.0/snippets/html-mode/list/ul.class elpa/yasnippet-0.11.0/snippets/html-mode/list/ul.id elpa/yasnippet-0.11.0/snippets/html-mode/mailto elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhml1 elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhtml1_1 elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhtml1_strict elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhtml1_transitional elpa/yasnippet-0.11.0/snippets/html-mode/meta/meta elpa/yasnippet-0.11.0/snippets/html-mode/meta/meta.http-equiv elpa/yasnippet-0.11.0/snippets/html-mode/p elpa/yasnippet-0.11.0/snippets/html-mode/pre elpa/yasnippet-0.11.0/snippets/html-mode/q.yasnippet elpa/yasnippet-0.11.0/snippets/html-mode/quote elpa/yasnippet-0.11.0/snippets/html-mode/script.javascript elpa/yasnippet-0.11.0/snippets/html-mode/script.javascript-src elpa/yasnippet-0.11.0/snippets/html-mode/span elpa/yasnippet-0.11.0/snippets/html-mode/span.class elpa/yasnippet-0.11.0/snippets/html-mode/span.id elpa/yasnippet-0.11.0/snippets/html-mode/style elpa/yasnippet-0.11.0/snippets/html-mode/table/table elpa/yasnippet-0.11.0/snippets/html-mode/table/td elpa/yasnippet-0.11.0/snippets/html-mode/table/th elpa/yasnippet-0.11.0/snippets/html-mode/table/tr elpa/yasnippet-0.11.0/snippets/html-mode/textarea elpa/yasnippet-0.11.0/snippets/html-mode/title elpa/yasnippet-0.11.0/snippets/js-mode/assert.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/cb.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/com.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/describe.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/err.snippet elpa/yasnippet-0.11.0/snippets/js-mode/error.snippet elpa/yasnippet-0.11.0/snippets/js-mode/expect.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/exports.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/fn.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/for.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/id.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/if.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/invoc.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/it.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/log.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/method.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/mod.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/prop.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/proto.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/rq.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/rt.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/slice.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/super.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/switch.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/throw.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/try.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/var.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/wh.yasnippet elpa/yasnippet-0.11.0/snippets/js-mode/while.yasnippet elpa/yasnippet-0.11.0/snippets/latex-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/latex-mode/begin elpa/yasnippet-0.11.0/snippets/markdown-mode/+ elpa/yasnippet-0.11.0/snippets/markdown-mode/- elpa/yasnippet-0.11.0/snippets/markdown-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/markdown-mode/_ elpa/yasnippet-0.11.0/snippets/markdown-mode/__ elpa/yasnippet-0.11.0/snippets/markdown-mode/` elpa/yasnippet-0.11.0/snippets/markdown-mode/h1.1 elpa/yasnippet-0.11.0/snippets/markdown-mode/h1.2 elpa/yasnippet-0.11.0/snippets/markdown-mode/h2.1 elpa/yasnippet-0.11.0/snippets/markdown-mode/h2.2 elpa/yasnippet-0.11.0/snippets/markdown-mode/h3 elpa/yasnippet-0.11.0/snippets/markdown-mode/h4 elpa/yasnippet-0.11.0/snippets/markdown-mode/h5 elpa/yasnippet-0.11.0/snippets/markdown-mode/h6 elpa/yasnippet-0.11.0/snippets/markdown-mode/hr.1 elpa/yasnippet-0.11.0/snippets/markdown-mode/hr.2 elpa/yasnippet-0.11.0/snippets/markdown-mode/img elpa/yasnippet-0.11.0/snippets/markdown-mode/link elpa/yasnippet-0.11.0/snippets/markdown-mode/ol elpa/yasnippet-0.11.0/snippets/markdown-mode/rimg elpa/yasnippet-0.11.0/snippets/markdown-mode/rlb elpa/yasnippet-0.11.0/snippets/markdown-mode/rlink elpa/yasnippet-0.11.0/snippets/nxml-mode/.yas-make-groups elpa/yasnippet-0.11.0/snippets/nxml-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/nxml-mode/body elpa/yasnippet-0.11.0/snippets/nxml-mode/br elpa/yasnippet-0.11.0/snippets/nxml-mode/code elpa/yasnippet-0.11.0/snippets/nxml-mode/div elpa/yasnippet-0.11.0/snippets/nxml-mode/form elpa/yasnippet-0.11.0/snippets/nxml-mode/head elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h1 elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h2 elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h3 elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h4 elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h5 elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h6 elpa/yasnippet-0.11.0/snippets/nxml-mode/hr elpa/yasnippet-0.11.0/snippets/nxml-mode/href elpa/yasnippet-0.11.0/snippets/nxml-mode/html elpa/yasnippet-0.11.0/snippets/nxml-mode/img elpa/yasnippet-0.11.0/snippets/nxml-mode/input elpa/yasnippet-0.11.0/snippets/nxml-mode/li elpa/yasnippet-0.11.0/snippets/nxml-mode/link elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/doctype elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/doctype.xhtml1_strict elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/doctype.xhtml1_transitional elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/meta elpa/yasnippet-0.11.0/snippets/nxml-mode/name elpa/yasnippet-0.11.0/snippets/nxml-mode/ol elpa/yasnippet-0.11.0/snippets/nxml-mode/p elpa/yasnippet-0.11.0/snippets/nxml-mode/pre elpa/yasnippet-0.11.0/snippets/nxml-mode/quote elpa/yasnippet-0.11.0/snippets/nxml-mode/span elpa/yasnippet-0.11.0/snippets/nxml-mode/style elpa/yasnippet-0.11.0/snippets/nxml-mode/table elpa/yasnippet-0.11.0/snippets/nxml-mode/tag.1l elpa/yasnippet-0.11.0/snippets/nxml-mode/tag.2l elpa/yasnippet-0.11.0/snippets/nxml-mode/td elpa/yasnippet-0.11.0/snippets/nxml-mode/th elpa/yasnippet-0.11.0/snippets/nxml-mode/title elpa/yasnippet-0.11.0/snippets/nxml-mode/tr elpa/yasnippet-0.11.0/snippets/nxml-mode/ul elpa/yasnippet-0.11.0/snippets/objc-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/objc-mode/prop elpa/yasnippet-0.11.0/snippets/perl-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/perl-mode/eval elpa/yasnippet-0.11.0/snippets/perl-mode/for elpa/yasnippet-0.11.0/snippets/perl-mode/fore elpa/yasnippet-0.11.0/snippets/perl-mode/if elpa/yasnippet-0.11.0/snippets/perl-mode/ife elpa/yasnippet-0.11.0/snippets/perl-mode/ifee elpa/yasnippet-0.11.0/snippets/perl-mode/sub elpa/yasnippet-0.11.0/snippets/perl-mode/unless elpa/yasnippet-0.11.0/snippets/perl-mode/while elpa/yasnippet-0.11.0/snippets/perl-mode/xfore elpa/yasnippet-0.11.0/snippets/perl-mode/xif elpa/yasnippet-0.11.0/snippets/perl-mode/xunless elpa/yasnippet-0.11.0/snippets/perl-mode/xwhile elpa/yasnippet-0.11.0/snippets/python-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/python-mode/__ elpa/yasnippet-0.11.0/snippets/python-mode/class elpa/yasnippet-0.11.0/snippets/python-mode/def elpa/yasnippet-0.11.0/snippets/python-mode/defm elpa/yasnippet-0.11.0/snippets/python-mode/for elpa/yasnippet-0.11.0/snippets/python-mode/ifmain elpa/yasnippet-0.11.0/snippets/python-mode/prop elpa/yasnippet-0.11.0/snippets/python-mode/propg elpa/yasnippet-0.11.0/snippets/python-mode/propsg elpa/yasnippet-0.11.0/snippets/python-mode/while elpa/yasnippet-0.11.0/snippets/rst-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/rst-mode/chap elpa/yasnippet-0.11.0/snippets/rst-mode/sec elpa/yasnippet-0.11.0/snippets/rst-mode/tit elpa/yasnippet-0.11.0/snippets/ruby-mode/.yas-make-groups elpa/yasnippet-0.11.0/snippets/ruby-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/all elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/any elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/classify elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/collect elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/deli elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/det elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/ea elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eac elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eai elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eav elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eawi elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/inject elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/reject elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/select elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/zip elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/forin elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/if elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/ife elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/tim elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/until elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/upt elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/when elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/while elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/Comp elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/am elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/cla elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/cls elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/mm elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/mod elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/r elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/rw elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/w elpa/yasnippet-0.11.0/snippets/ruby-mode/general/# elpa/yasnippet-0.11.0/snippets/ruby-mode/general/=b elpa/yasnippet-0.11.0/snippets/ruby-mode/general/app elpa/yasnippet-0.11.0/snippets/ruby-mode/general/bm elpa/yasnippet-0.11.0/snippets/ruby-mode/general/case elpa/yasnippet-0.11.0/snippets/ruby-mode/general/dee elpa/yasnippet-0.11.0/snippets/ruby-mode/general/rb elpa/yasnippet-0.11.0/snippets/ruby-mode/general/req elpa/yasnippet-0.11.0/snippets/ruby-mode/general/rreq elpa/yasnippet-0.11.0/snippets/ruby-mode/general/y elpa/yasnippet-0.11.0/snippets/scala-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/scala-mode/act elpa/yasnippet-0.11.0/snippets/scala-mode/act.arg elpa/yasnippet-0.11.0/snippets/scala-mode/actor elpa/yasnippet-0.11.0/snippets/scala-mode/ano elpa/yasnippet-0.11.0/snippets/scala-mode/app elpa/yasnippet-0.11.0/snippets/scala-mode/arr.new elpa/yasnippet-0.11.0/snippets/scala-mode/arr.val-new elpa/yasnippet-0.11.0/snippets/scala-mode/asof elpa/yasnippet-0.11.0/snippets/scala-mode/ass elpa/yasnippet-0.11.0/snippets/scala-mode/ass.true elpa/yasnippet-0.11.0/snippets/scala-mode/at.author elpa/yasnippet-0.11.0/snippets/scala-mode/at.param elpa/yasnippet-0.11.0/snippets/scala-mode/at.return elpa/yasnippet-0.11.0/snippets/scala-mode/at.version elpa/yasnippet-0.11.0/snippets/scala-mode/bang elpa/yasnippet-0.11.0/snippets/scala-mode/case elpa/yasnippet-0.11.0/snippets/scala-mode/case.match-all elpa/yasnippet-0.11.0/snippets/scala-mode/cast elpa/yasnippet-0.11.0/snippets/scala-mode/cc elpa/yasnippet-0.11.0/snippets/scala-mode/cl elpa/yasnippet-0.11.0/snippets/scala-mode/cl.abs elpa/yasnippet-0.11.0/snippets/scala-mode/cl.abs-arg elpa/yasnippet-0.11.0/snippets/scala-mode/cl.arg elpa/yasnippet-0.11.0/snippets/scala-mode/clof elpa/yasnippet-0.11.0/snippets/scala-mode/co elpa/yasnippet-0.11.0/snippets/scala-mode/cons elpa/yasnippet-0.11.0/snippets/scala-mode/cons.nil elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg-body elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg-ret elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg-ret-body elpa/yasnippet-0.11.0/snippets/scala-mode/def.body elpa/yasnippet-0.11.0/snippets/scala-mode/def.ret elpa/yasnippet-0.11.0/snippets/scala-mode/def.ret-body elpa/yasnippet-0.11.0/snippets/scala-mode/def.simple elpa/yasnippet-0.11.0/snippets/scala-mode/doc.class elpa/yasnippet-0.11.0/snippets/scala-mode/doc.def elpa/yasnippet-0.11.0/snippets/scala-mode/doc.file elpa/yasnippet-0.11.0/snippets/scala-mode/doc.file-scala elpa/yasnippet-0.11.0/snippets/scala-mode/doc.file-scala-api elpa/yasnippet-0.11.0/snippets/scala-mode/doc.scaladoc elpa/yasnippet-0.11.0/snippets/scala-mode/expect elpa/yasnippet-0.11.0/snippets/scala-mode/ext elpa/yasnippet-0.11.0/snippets/scala-mode/for.extract elpa/yasnippet-0.11.0/snippets/scala-mode/for.if elpa/yasnippet-0.11.0/snippets/scala-mode/for.loop elpa/yasnippet-0.11.0/snippets/scala-mode/for.multi elpa/yasnippet-0.11.0/snippets/scala-mode/foreach elpa/yasnippet-0.11.0/snippets/scala-mode/hmap.new elpa/yasnippet-0.11.0/snippets/scala-mode/hmap.val-new elpa/yasnippet-0.11.0/snippets/scala-mode/hset.new elpa/yasnippet-0.11.0/snippets/scala-mode/hset.val-new elpa/yasnippet-0.11.0/snippets/scala-mode/if elpa/yasnippet-0.11.0/snippets/scala-mode/if.else elpa/yasnippet-0.11.0/snippets/scala-mode/imp elpa/yasnippet-0.11.0/snippets/scala-mode/intercept elpa/yasnippet-0.11.0/snippets/scala-mode/isof elpa/yasnippet-0.11.0/snippets/scala-mode/ls.new elpa/yasnippet-0.11.0/snippets/scala-mode/ls.val-new elpa/yasnippet-0.11.0/snippets/scala-mode/main elpa/yasnippet-0.11.0/snippets/scala-mode/map elpa/yasnippet-0.11.0/snippets/scala-mode/map.new elpa/yasnippet-0.11.0/snippets/scala-mode/match elpa/yasnippet-0.11.0/snippets/scala-mode/match.can elpa/yasnippet-0.11.0/snippets/scala-mode/match.option elpa/yasnippet-0.11.0/snippets/scala-mode/mix elpa/yasnippet-0.11.0/snippets/scala-mode/ob elpa/yasnippet-0.11.0/snippets/scala-mode/pac elpa/yasnippet-0.11.0/snippets/scala-mode/pr.newline elpa/yasnippet-0.11.0/snippets/scala-mode/pr.simple elpa/yasnippet-0.11.0/snippets/scala-mode/pr.string elpa/yasnippet-0.11.0/snippets/scala-mode/pr.trace elpa/yasnippet-0.11.0/snippets/scala-mode/pri elpa/yasnippet-0.11.0/snippets/scala-mode/pri.param elpa/yasnippet-0.11.0/snippets/scala-mode/pro elpa/yasnippet-0.11.0/snippets/scala-mode/pro.param elpa/yasnippet-0.11.0/snippets/scala-mode/suite elpa/yasnippet-0.11.0/snippets/scala-mode/test elpa/yasnippet-0.11.0/snippets/scala-mode/throw elpa/yasnippet-0.11.0/snippets/scala-mode/tr elpa/yasnippet-0.11.0/snippets/scala-mode/tr.ext elpa/yasnippet-0.11.0/snippets/scala-mode/tr.ext-with elpa/yasnippet-0.11.0/snippets/scala-mode/tr.with elpa/yasnippet-0.11.0/snippets/scala-mode/try elpa/yasnippet-0.11.0/snippets/scala-mode/try.catch-finally elpa/yasnippet-0.11.0/snippets/scala-mode/try.finally elpa/yasnippet-0.11.0/snippets/scala-mode/tup.arrow elpa/yasnippet-0.11.0/snippets/scala-mode/tup.paren elpa/yasnippet-0.11.0/snippets/scala-mode/val elpa/yasnippet-0.11.0/snippets/scala-mode/val.new elpa/yasnippet-0.11.0/snippets/scala-mode/val.ret elpa/yasnippet-0.11.0/snippets/scala-mode/var elpa/yasnippet-0.11.0/snippets/scala-mode/var.new elpa/yasnippet-0.11.0/snippets/scala-mode/var.ret elpa/yasnippet-0.11.0/snippets/scala-mode/whi elpa/yasnippet-0.11.0/snippets/scala-mode/with elpa/yasnippet-0.11.0/snippets/snippet-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/snippet-mode/field elpa/yasnippet-0.11.0/snippets/snippet-mode/mirror elpa/yasnippet-0.11.0/snippets/snippet-mode/vars elpa/yasnippet-0.11.0/snippets/sql-mode/.yas-parents elpa/yasnippet-0.11.0/snippets/sql-mode/column elpa/yasnippet-0.11.0/snippets/sql-mode/constraint elpa/yasnippet-0.11.0/snippets/sql-mode/constraint.1 elpa/yasnippet-0.11.0/snippets/sql-mode/create elpa/yasnippet-0.11.0/snippets/sql-mode/create.1 elpa/yasnippet-0.11.0/snippets/sql-mode/references elpa/yasnippet-0.11.0/snippets/text-mode/email elpa/yasnippet-0.11.0/snippets/text-mode/time elpa/yasnippet-0.11.0/yasnippet-autoloads.el elpa/yasnippet-0.11.0/yasnippet-debug.el elpa/yasnippet-0.11.0/yasnippet-pkg.el elpa/yasnippet-0.11.0/yasnippet-tests.el elpa/yasnippet-0.11.0/yasnippet.el elpa/yasnippet-0.9.1.signed elpa/yasnippet-0.9.1/.gitmodules elpa/yasnippet-0.9.1/.travis.yml elpa/yasnippet-0.9.1/CONTRIBUTING.md elpa/yasnippet-0.9.1/ChangeLog elpa/yasnippet-0.9.1/NEWS elpa/yasnippet-0.9.1/README elpa/yasnippet-0.9.1/README.mdown elpa/yasnippet-0.9.1/Rakefile elpa/yasnippet-0.9.1/doc/.nosearch elpa/yasnippet-0.9.1/doc/faq.org elpa/yasnippet-0.9.1/doc/images/bg-content-left.png elpa/yasnippet-0.9.1/doc/images/bg-content-right.png elpa/yasnippet-0.9.1/doc/images/bg-content.png elpa/yasnippet-0.9.1/doc/images/bg-navigation-item-hover.png elpa/yasnippet-0.9.1/doc/images/bg-navigation-item.png elpa/yasnippet-0.9.1/doc/images/bg-navigation.png elpa/yasnippet-0.9.1/doc/images/body.png elpa/yasnippet-0.9.1/doc/images/customization-group.png elpa/yasnippet-0.9.1/doc/images/dropdown-menu.png elpa/yasnippet-0.9.1/doc/images/external.png elpa/yasnippet-0.9.1/doc/images/ido-menu.png elpa/yasnippet-0.9.1/doc/images/menu-1.png elpa/yasnippet-0.9.1/doc/images/menu-2.png elpa/yasnippet-0.9.1/doc/images/menu-groups.png elpa/yasnippet-0.9.1/doc/images/menu-parent.png elpa/yasnippet-0.9.1/doc/images/minor-mode-indicator.png elpa/yasnippet-0.9.1/doc/images/x-menu.png elpa/yasnippet-0.9.1/doc/index.org elpa/yasnippet-0.9.1/doc/nav-menu.html.inc elpa/yasnippet-0.9.1/doc/org-setup.inc elpa/yasnippet-0.9.1/doc/snippet-development.org elpa/yasnippet-0.9.1/doc/snippet-expansion.org elpa/yasnippet-0.9.1/doc/snippet-menu.org elpa/yasnippet-0.9.1/doc/snippet-organization.org elpa/yasnippet-0.9.1/doc/snippet-reference.org elpa/yasnippet-0.9.1/doc/stylesheets/manual.css elpa/yasnippet-0.9.1/doc/stylesheets/styles.css elpa/yasnippet-0.9.1/doc/yas-doc-helper.el elpa/yasnippet-0.9.1/snippets/c++-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/c++-mode/beginend elpa/yasnippet-0.9.1/snippets/c++-mode/class elpa/yasnippet-0.9.1/snippets/c++-mode/ns elpa/yasnippet-0.9.1/snippets/c++-mode/template elpa/yasnippet-0.9.1/snippets/c++-mode/using elpa/yasnippet-0.9.1/snippets/c-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/c-mode/fopen elpa/yasnippet-0.9.1/snippets/c-mode/printf elpa/yasnippet-0.9.1/snippets/cc-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/cc-mode/do elpa/yasnippet-0.9.1/snippets/cc-mode/for elpa/yasnippet-0.9.1/snippets/cc-mode/if elpa/yasnippet-0.9.1/snippets/cc-mode/inc elpa/yasnippet-0.9.1/snippets/cc-mode/inc.1 elpa/yasnippet-0.9.1/snippets/cc-mode/main elpa/yasnippet-0.9.1/snippets/cc-mode/once elpa/yasnippet-0.9.1/snippets/cc-mode/struct elpa/yasnippet-0.9.1/snippets/cperl-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/csharp-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/csharp-mode/attrib elpa/yasnippet-0.9.1/snippets/csharp-mode/attrib.1 elpa/yasnippet-0.9.1/snippets/csharp-mode/attrib.2 elpa/yasnippet-0.9.1/snippets/csharp-mode/class elpa/yasnippet-0.9.1/snippets/csharp-mode/comment elpa/yasnippet-0.9.1/snippets/csharp-mode/comment.1 elpa/yasnippet-0.9.1/snippets/csharp-mode/comment.2 elpa/yasnippet-0.9.1/snippets/csharp-mode/comment.3 elpa/yasnippet-0.9.1/snippets/csharp-mode/method elpa/yasnippet-0.9.1/snippets/csharp-mode/namespace elpa/yasnippet-0.9.1/snippets/csharp-mode/prop elpa/yasnippet-0.9.1/snippets/csharp-mode/region elpa/yasnippet-0.9.1/snippets/csharp-mode/using elpa/yasnippet-0.9.1/snippets/csharp-mode/using.1 elpa/yasnippet-0.9.1/snippets/csharp-mode/using.2 elpa/yasnippet-0.9.1/snippets/css-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/css-mode/bg elpa/yasnippet-0.9.1/snippets/css-mode/bg.1 elpa/yasnippet-0.9.1/snippets/css-mode/bor elpa/yasnippet-0.9.1/snippets/css-mode/cl elpa/yasnippet-0.9.1/snippets/css-mode/disp.block elpa/yasnippet-0.9.1/snippets/css-mode/disp.inline elpa/yasnippet-0.9.1/snippets/css-mode/disp.none elpa/yasnippet-0.9.1/snippets/css-mode/ff elpa/yasnippet-0.9.1/snippets/css-mode/fs elpa/yasnippet-0.9.1/snippets/css-mode/mar.bottom elpa/yasnippet-0.9.1/snippets/css-mode/mar.left elpa/yasnippet-0.9.1/snippets/css-mode/mar.mar elpa/yasnippet-0.9.1/snippets/css-mode/mar.margin elpa/yasnippet-0.9.1/snippets/css-mode/mar.right elpa/yasnippet-0.9.1/snippets/css-mode/mar.top elpa/yasnippet-0.9.1/snippets/css-mode/pad.bottom elpa/yasnippet-0.9.1/snippets/css-mode/pad.left elpa/yasnippet-0.9.1/snippets/css-mode/pad.pad elpa/yasnippet-0.9.1/snippets/css-mode/pad.padding elpa/yasnippet-0.9.1/snippets/css-mode/pad.right elpa/yasnippet-0.9.1/snippets/css-mode/pad.top elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/.read_me elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/add-hook.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/and.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/append.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/apply.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/aref.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/aset.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/assq.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/autoload.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/backward-char.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/beginning-of-line.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/bounds-of-thing-at-point.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-file-name.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-modified-p.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-substring-no-properties.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-substring.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/car.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/cdr.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/concat.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/cond.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/condition-case.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/cons.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/consp.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/copy-directory.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/copy-file.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/current-buffer.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/custom-autoload.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defalias.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defcustom.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/define-key.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defsubst.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defun.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defvar.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-char.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-directory.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-file.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-region.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/directory-files.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/dolist.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/end-of-line.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/eq.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/equal.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/error.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/expand-file-name.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/f.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/fboundp.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-directory.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-extension.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-nondirectory.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-sans-extension.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-relative-name.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/find-file.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/format.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/forward-char.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/forward-line.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/funcall.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/function.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/get.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/global-set-key.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/goto-char.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/if.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/insert-file-contents.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/insert.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/interactive.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/kbd.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/kill-buffer.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/lambda.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/length.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/let.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/line-beginning-position.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/line-end-position.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/list.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/looking-at.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/make-directory.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/make-local-variable.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/mapc.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/mapcar.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/match-beginning.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/match-end.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/match-string.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/memq.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/message.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/not.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/nth.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/null.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/number-to-string.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/or.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/point-max.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/point-min.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/point.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/princ.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/print.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/progn.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/push.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/put.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/re-search-backward.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/re-search-forward.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/region-active-p.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/region-beginning.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/region-end.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/rename-file.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/repeat.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/replace-regexp-in-string.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/replace-regexp.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/require.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/save-buffer.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/save-excursion.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-backward-regexp.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-backward.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-forward-regexp.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-forward.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set-buffer.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set-file-modes.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set-mark.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/setq.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/skip-chars-backward.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/skip-chars-forward.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/split-string.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string-match.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string-to-number.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string=.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/stringp.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/substring.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/thing-at-point.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/unless.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/vector.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/when.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/while.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/widget-get.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/with-current-buffer.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-dired.process_marked.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-file.process.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-file.read-lines.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-find-replace.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-grabstring.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-grabthing.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-traverse_dir.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-word-or-region.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/y-or-n-p.yasnippet elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/yes-or-no-p.yasnippet elpa/yasnippet-0.9.1/snippets/erlang-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/erlang-mode/after elpa/yasnippet-0.9.1/snippets/erlang-mode/begin elpa/yasnippet-0.9.1/snippets/erlang-mode/beh elpa/yasnippet-0.9.1/snippets/erlang-mode/case elpa/yasnippet-0.9.1/snippets/erlang-mode/compile elpa/yasnippet-0.9.1/snippets/erlang-mode/def elpa/yasnippet-0.9.1/snippets/erlang-mode/exp elpa/yasnippet-0.9.1/snippets/erlang-mode/fun elpa/yasnippet-0.9.1/snippets/erlang-mode/if elpa/yasnippet-0.9.1/snippets/erlang-mode/ifdef elpa/yasnippet-0.9.1/snippets/erlang-mode/ifndef elpa/yasnippet-0.9.1/snippets/erlang-mode/imp elpa/yasnippet-0.9.1/snippets/erlang-mode/inc elpa/yasnippet-0.9.1/snippets/erlang-mode/inc.lib elpa/yasnippet-0.9.1/snippets/erlang-mode/loop elpa/yasnippet-0.9.1/snippets/erlang-mode/mod elpa/yasnippet-0.9.1/snippets/erlang-mode/rcv elpa/yasnippet-0.9.1/snippets/erlang-mode/rcv.after elpa/yasnippet-0.9.1/snippets/erlang-mode/rec elpa/yasnippet-0.9.1/snippets/erlang-mode/try elpa/yasnippet-0.9.1/snippets/erlang-mode/undef elpa/yasnippet-0.9.1/snippets/f90-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/f90-mode/au elpa/yasnippet-0.9.1/snippets/f90-mode/bd elpa/yasnippet-0.9.1/snippets/f90-mode/c elpa/yasnippet-0.9.1/snippets/f90-mode/ch elpa/yasnippet-0.9.1/snippets/f90-mode/cx elpa/yasnippet-0.9.1/snippets/f90-mode/dc elpa/yasnippet-0.9.1/snippets/f90-mode/do elpa/yasnippet-0.9.1/snippets/f90-mode/dp elpa/yasnippet-0.9.1/snippets/f90-mode/eq elpa/yasnippet-0.9.1/snippets/f90-mode/ib elpa/yasnippet-0.9.1/snippets/f90-mode/ic elpa/yasnippet-0.9.1/snippets/f90-mode/ich elpa/yasnippet-0.9.1/snippets/f90-mode/if elpa/yasnippet-0.9.1/snippets/f90-mode/ii elpa/yasnippet-0.9.1/snippets/f90-mode/il elpa/yasnippet-0.9.1/snippets/f90-mode/in elpa/yasnippet-0.9.1/snippets/f90-mode/inc elpa/yasnippet-0.9.1/snippets/f90-mode/intr elpa/yasnippet-0.9.1/snippets/f90-mode/ir elpa/yasnippet-0.9.1/snippets/f90-mode/l elpa/yasnippet-0.9.1/snippets/f90-mode/pa elpa/yasnippet-0.9.1/snippets/f90-mode/pr elpa/yasnippet-0.9.1/snippets/f90-mode/re elpa/yasnippet-0.9.1/snippets/f90-mode/st elpa/yasnippet-0.9.1/snippets/f90-mode/su elpa/yasnippet-0.9.1/snippets/f90-mode/wr elpa/yasnippet-0.9.1/snippets/html-mode/.yas-make-groups elpa/yasnippet-0.9.1/snippets/html-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/html-mode/b.yasnippet elpa/yasnippet-0.9.1/snippets/html-mode/body elpa/yasnippet-0.9.1/snippets/html-mode/br elpa/yasnippet-0.9.1/snippets/html-mode/code elpa/yasnippet-0.9.1/snippets/html-mode/code.class elpa/yasnippet-0.9.1/snippets/html-mode/div elpa/yasnippet-0.9.1/snippets/html-mode/div.class elpa/yasnippet-0.9.1/snippets/html-mode/div.id elpa/yasnippet-0.9.1/snippets/html-mode/div.id-class elpa/yasnippet-0.9.1/snippets/html-mode/dov elpa/yasnippet-0.9.1/snippets/html-mode/form elpa/yasnippet-0.9.1/snippets/html-mode/head elpa/yasnippet-0.9.1/snippets/html-mode/header/h1 elpa/yasnippet-0.9.1/snippets/html-mode/header/h2 elpa/yasnippet-0.9.1/snippets/html-mode/header/h3 elpa/yasnippet-0.9.1/snippets/html-mode/header/h4 elpa/yasnippet-0.9.1/snippets/html-mode/header/h5 elpa/yasnippet-0.9.1/snippets/html-mode/header/h6 elpa/yasnippet-0.9.1/snippets/html-mode/hr elpa/yasnippet-0.9.1/snippets/html-mode/href elpa/yasnippet-0.9.1/snippets/html-mode/html elpa/yasnippet-0.9.1/snippets/html-mode/html.xmlns elpa/yasnippet-0.9.1/snippets/html-mode/i.yasnippet elpa/yasnippet-0.9.1/snippets/html-mode/img elpa/yasnippet-0.9.1/snippets/html-mode/input elpa/yasnippet-0.9.1/snippets/html-mode/link.stylesheet elpa/yasnippet-0.9.1/snippets/html-mode/link.stylesheet-ie elpa/yasnippet-0.9.1/snippets/html-mode/list/dd elpa/yasnippet-0.9.1/snippets/html-mode/list/dl elpa/yasnippet-0.9.1/snippets/html-mode/list/dl.id elpa/yasnippet-0.9.1/snippets/html-mode/list/dt elpa/yasnippet-0.9.1/snippets/html-mode/list/li elpa/yasnippet-0.9.1/snippets/html-mode/list/li.class elpa/yasnippet-0.9.1/snippets/html-mode/list/ol elpa/yasnippet-0.9.1/snippets/html-mode/list/ol.class elpa/yasnippet-0.9.1/snippets/html-mode/list/ol.id elpa/yasnippet-0.9.1/snippets/html-mode/list/ul elpa/yasnippet-0.9.1/snippets/html-mode/list/ul.class elpa/yasnippet-0.9.1/snippets/html-mode/list/ul.id elpa/yasnippet-0.9.1/snippets/html-mode/mailto elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhml1 elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhtml1_1 elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhtml1_strict elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhtml1_transitional elpa/yasnippet-0.9.1/snippets/html-mode/meta/meta elpa/yasnippet-0.9.1/snippets/html-mode/meta/meta.http-equiv elpa/yasnippet-0.9.1/snippets/html-mode/p elpa/yasnippet-0.9.1/snippets/html-mode/pre elpa/yasnippet-0.9.1/snippets/html-mode/q.yasnippet elpa/yasnippet-0.9.1/snippets/html-mode/quote elpa/yasnippet-0.9.1/snippets/html-mode/script.javascript elpa/yasnippet-0.9.1/snippets/html-mode/script.javascript-src elpa/yasnippet-0.9.1/snippets/html-mode/span elpa/yasnippet-0.9.1/snippets/html-mode/span.class elpa/yasnippet-0.9.1/snippets/html-mode/span.id elpa/yasnippet-0.9.1/snippets/html-mode/style elpa/yasnippet-0.9.1/snippets/html-mode/table/table elpa/yasnippet-0.9.1/snippets/html-mode/table/td elpa/yasnippet-0.9.1/snippets/html-mode/table/th elpa/yasnippet-0.9.1/snippets/html-mode/table/tr elpa/yasnippet-0.9.1/snippets/html-mode/textarea elpa/yasnippet-0.9.1/snippets/html-mode/title elpa/yasnippet-0.9.1/snippets/js-mode/assert.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/cb.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/com.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/describe.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/err.snippet elpa/yasnippet-0.9.1/snippets/js-mode/error.snippet elpa/yasnippet-0.9.1/snippets/js-mode/expect.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/exports.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/fn.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/for.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/id.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/if.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/invoc.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/it.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/log.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/method.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/mod.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/prop.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/proto.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/rq.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/rt.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/slice.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/super.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/switch.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/throw.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/try.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/var.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/wh.yasnippet elpa/yasnippet-0.9.1/snippets/js-mode/while.yasnippet elpa/yasnippet-0.9.1/snippets/latex-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/latex-mode/begin elpa/yasnippet-0.9.1/snippets/markdown-mode/+ elpa/yasnippet-0.9.1/snippets/markdown-mode/- elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/markdown-mode/_ elpa/yasnippet-0.9.1/snippets/markdown-mode/__ elpa/yasnippet-0.9.1/snippets/markdown-mode/` elpa/yasnippet-0.9.1/snippets/markdown-mode/h1.1 elpa/yasnippet-0.9.1/snippets/markdown-mode/h1.2 elpa/yasnippet-0.9.1/snippets/markdown-mode/h2.1 elpa/yasnippet-0.9.1/snippets/markdown-mode/h2.2 elpa/yasnippet-0.9.1/snippets/markdown-mode/h3 elpa/yasnippet-0.9.1/snippets/markdown-mode/h4 elpa/yasnippet-0.9.1/snippets/markdown-mode/h5 elpa/yasnippet-0.9.1/snippets/markdown-mode/h6 elpa/yasnippet-0.9.1/snippets/markdown-mode/hr.1 elpa/yasnippet-0.9.1/snippets/markdown-mode/hr.2 elpa/yasnippet-0.9.1/snippets/markdown-mode/img elpa/yasnippet-0.9.1/snippets/markdown-mode/link elpa/yasnippet-0.9.1/snippets/markdown-mode/ol elpa/yasnippet-0.9.1/snippets/markdown-mode/rimg elpa/yasnippet-0.9.1/snippets/markdown-mode/rlb elpa/yasnippet-0.9.1/snippets/markdown-mode/rlink elpa/yasnippet-0.9.1/snippets/nxml-mode/.yas-make-groups elpa/yasnippet-0.9.1/snippets/nxml-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/nxml-mode/body elpa/yasnippet-0.9.1/snippets/nxml-mode/br elpa/yasnippet-0.9.1/snippets/nxml-mode/code elpa/yasnippet-0.9.1/snippets/nxml-mode/div elpa/yasnippet-0.9.1/snippets/nxml-mode/form elpa/yasnippet-0.9.1/snippets/nxml-mode/head elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h1 elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h2 elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h3 elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h4 elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h5 elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h6 elpa/yasnippet-0.9.1/snippets/nxml-mode/hr elpa/yasnippet-0.9.1/snippets/nxml-mode/href elpa/yasnippet-0.9.1/snippets/nxml-mode/html elpa/yasnippet-0.9.1/snippets/nxml-mode/img elpa/yasnippet-0.9.1/snippets/nxml-mode/input elpa/yasnippet-0.9.1/snippets/nxml-mode/li elpa/yasnippet-0.9.1/snippets/nxml-mode/link elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/doctype elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/doctype.xhtml1_strict elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/doctype.xhtml1_transitional elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/meta elpa/yasnippet-0.9.1/snippets/nxml-mode/name elpa/yasnippet-0.9.1/snippets/nxml-mode/ol elpa/yasnippet-0.9.1/snippets/nxml-mode/p elpa/yasnippet-0.9.1/snippets/nxml-mode/pre elpa/yasnippet-0.9.1/snippets/nxml-mode/quote elpa/yasnippet-0.9.1/snippets/nxml-mode/span elpa/yasnippet-0.9.1/snippets/nxml-mode/style elpa/yasnippet-0.9.1/snippets/nxml-mode/table elpa/yasnippet-0.9.1/snippets/nxml-mode/tag.1l elpa/yasnippet-0.9.1/snippets/nxml-mode/tag.2l elpa/yasnippet-0.9.1/snippets/nxml-mode/td elpa/yasnippet-0.9.1/snippets/nxml-mode/th elpa/yasnippet-0.9.1/snippets/nxml-mode/title elpa/yasnippet-0.9.1/snippets/nxml-mode/tr elpa/yasnippet-0.9.1/snippets/nxml-mode/ul elpa/yasnippet-0.9.1/snippets/objc-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/objc-mode/prop elpa/yasnippet-0.9.1/snippets/perl-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/perl-mode/eval elpa/yasnippet-0.9.1/snippets/perl-mode/for elpa/yasnippet-0.9.1/snippets/perl-mode/fore elpa/yasnippet-0.9.1/snippets/perl-mode/if elpa/yasnippet-0.9.1/snippets/perl-mode/ife elpa/yasnippet-0.9.1/snippets/perl-mode/ifee elpa/yasnippet-0.9.1/snippets/perl-mode/sub elpa/yasnippet-0.9.1/snippets/perl-mode/unless elpa/yasnippet-0.9.1/snippets/perl-mode/while elpa/yasnippet-0.9.1/snippets/perl-mode/xfore elpa/yasnippet-0.9.1/snippets/perl-mode/xif elpa/yasnippet-0.9.1/snippets/perl-mode/xunless elpa/yasnippet-0.9.1/snippets/perl-mode/xwhile elpa/yasnippet-0.9.1/snippets/python-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/python-mode/__ elpa/yasnippet-0.9.1/snippets/python-mode/class elpa/yasnippet-0.9.1/snippets/python-mode/def elpa/yasnippet-0.9.1/snippets/python-mode/defm elpa/yasnippet-0.9.1/snippets/python-mode/for elpa/yasnippet-0.9.1/snippets/python-mode/ifmain elpa/yasnippet-0.9.1/snippets/python-mode/prop elpa/yasnippet-0.9.1/snippets/python-mode/propg elpa/yasnippet-0.9.1/snippets/python-mode/propsg elpa/yasnippet-0.9.1/snippets/python-mode/while elpa/yasnippet-0.9.1/snippets/rst-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/rst-mode/chap elpa/yasnippet-0.9.1/snippets/rst-mode/sec elpa/yasnippet-0.9.1/snippets/rst-mode/tit elpa/yasnippet-0.9.1/snippets/ruby-mode/.yas-make-groups elpa/yasnippet-0.9.1/snippets/ruby-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/all elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/any elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/classify elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/collect elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/deli elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/det elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/ea elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eac elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eai elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eav elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eawi elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/inject elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/reject elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/select elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/zip elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/forin elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/if elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/ife elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/tim elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/until elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/upt elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/when elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/while elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/Comp elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/am elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/cla elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/cls elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/mm elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/mod elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/r elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/rw elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/w elpa/yasnippet-0.9.1/snippets/ruby-mode/general/# elpa/yasnippet-0.9.1/snippets/ruby-mode/general/=b elpa/yasnippet-0.9.1/snippets/ruby-mode/general/app elpa/yasnippet-0.9.1/snippets/ruby-mode/general/bm elpa/yasnippet-0.9.1/snippets/ruby-mode/general/case elpa/yasnippet-0.9.1/snippets/ruby-mode/general/dee elpa/yasnippet-0.9.1/snippets/ruby-mode/general/rb elpa/yasnippet-0.9.1/snippets/ruby-mode/general/req elpa/yasnippet-0.9.1/snippets/ruby-mode/general/rreq elpa/yasnippet-0.9.1/snippets/ruby-mode/general/y elpa/yasnippet-0.9.1/snippets/scala-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/scala-mode/act elpa/yasnippet-0.9.1/snippets/scala-mode/act.arg elpa/yasnippet-0.9.1/snippets/scala-mode/actor elpa/yasnippet-0.9.1/snippets/scala-mode/ano elpa/yasnippet-0.9.1/snippets/scala-mode/app elpa/yasnippet-0.9.1/snippets/scala-mode/arr.new elpa/yasnippet-0.9.1/snippets/scala-mode/arr.val-new elpa/yasnippet-0.9.1/snippets/scala-mode/asof elpa/yasnippet-0.9.1/snippets/scala-mode/ass elpa/yasnippet-0.9.1/snippets/scala-mode/ass.true elpa/yasnippet-0.9.1/snippets/scala-mode/at.author elpa/yasnippet-0.9.1/snippets/scala-mode/at.param elpa/yasnippet-0.9.1/snippets/scala-mode/at.return elpa/yasnippet-0.9.1/snippets/scala-mode/at.version elpa/yasnippet-0.9.1/snippets/scala-mode/bang elpa/yasnippet-0.9.1/snippets/scala-mode/case elpa/yasnippet-0.9.1/snippets/scala-mode/case.match-all elpa/yasnippet-0.9.1/snippets/scala-mode/cast elpa/yasnippet-0.9.1/snippets/scala-mode/cc elpa/yasnippet-0.9.1/snippets/scala-mode/cl elpa/yasnippet-0.9.1/snippets/scala-mode/cl.abs elpa/yasnippet-0.9.1/snippets/scala-mode/cl.abs-arg elpa/yasnippet-0.9.1/snippets/scala-mode/cl.arg elpa/yasnippet-0.9.1/snippets/scala-mode/clof elpa/yasnippet-0.9.1/snippets/scala-mode/co elpa/yasnippet-0.9.1/snippets/scala-mode/cons elpa/yasnippet-0.9.1/snippets/scala-mode/cons.nil elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg-body elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg-ret elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg-ret-body elpa/yasnippet-0.9.1/snippets/scala-mode/def.body elpa/yasnippet-0.9.1/snippets/scala-mode/def.ret elpa/yasnippet-0.9.1/snippets/scala-mode/def.ret-body elpa/yasnippet-0.9.1/snippets/scala-mode/def.simple elpa/yasnippet-0.9.1/snippets/scala-mode/doc.class elpa/yasnippet-0.9.1/snippets/scala-mode/doc.def elpa/yasnippet-0.9.1/snippets/scala-mode/doc.file elpa/yasnippet-0.9.1/snippets/scala-mode/doc.file-scala elpa/yasnippet-0.9.1/snippets/scala-mode/doc.file-scala-api elpa/yasnippet-0.9.1/snippets/scala-mode/doc.scaladoc elpa/yasnippet-0.9.1/snippets/scala-mode/expect elpa/yasnippet-0.9.1/snippets/scala-mode/ext elpa/yasnippet-0.9.1/snippets/scala-mode/for.extract elpa/yasnippet-0.9.1/snippets/scala-mode/for.if elpa/yasnippet-0.9.1/snippets/scala-mode/for.loop elpa/yasnippet-0.9.1/snippets/scala-mode/for.multi elpa/yasnippet-0.9.1/snippets/scala-mode/foreach elpa/yasnippet-0.9.1/snippets/scala-mode/hmap.new elpa/yasnippet-0.9.1/snippets/scala-mode/hmap.val-new elpa/yasnippet-0.9.1/snippets/scala-mode/hset.new elpa/yasnippet-0.9.1/snippets/scala-mode/hset.val-new elpa/yasnippet-0.9.1/snippets/scala-mode/if elpa/yasnippet-0.9.1/snippets/scala-mode/if.else elpa/yasnippet-0.9.1/snippets/scala-mode/imp elpa/yasnippet-0.9.1/snippets/scala-mode/intercept elpa/yasnippet-0.9.1/snippets/scala-mode/isof elpa/yasnippet-0.9.1/snippets/scala-mode/ls.new elpa/yasnippet-0.9.1/snippets/scala-mode/ls.val-new elpa/yasnippet-0.9.1/snippets/scala-mode/main elpa/yasnippet-0.9.1/snippets/scala-mode/map elpa/yasnippet-0.9.1/snippets/scala-mode/map.new elpa/yasnippet-0.9.1/snippets/scala-mode/match elpa/yasnippet-0.9.1/snippets/scala-mode/match.can elpa/yasnippet-0.9.1/snippets/scala-mode/match.option elpa/yasnippet-0.9.1/snippets/scala-mode/mix elpa/yasnippet-0.9.1/snippets/scala-mode/ob elpa/yasnippet-0.9.1/snippets/scala-mode/pac elpa/yasnippet-0.9.1/snippets/scala-mode/pr.newline elpa/yasnippet-0.9.1/snippets/scala-mode/pr.simple elpa/yasnippet-0.9.1/snippets/scala-mode/pr.string elpa/yasnippet-0.9.1/snippets/scala-mode/pr.trace elpa/yasnippet-0.9.1/snippets/scala-mode/pri elpa/yasnippet-0.9.1/snippets/scala-mode/pri.param elpa/yasnippet-0.9.1/snippets/scala-mode/pro elpa/yasnippet-0.9.1/snippets/scala-mode/pro.param elpa/yasnippet-0.9.1/snippets/scala-mode/suite elpa/yasnippet-0.9.1/snippets/scala-mode/test elpa/yasnippet-0.9.1/snippets/scala-mode/throw elpa/yasnippet-0.9.1/snippets/scala-mode/tr elpa/yasnippet-0.9.1/snippets/scala-mode/tr.ext elpa/yasnippet-0.9.1/snippets/scala-mode/tr.ext-with elpa/yasnippet-0.9.1/snippets/scala-mode/tr.with elpa/yasnippet-0.9.1/snippets/scala-mode/try elpa/yasnippet-0.9.1/snippets/scala-mode/try.catch-finally elpa/yasnippet-0.9.1/snippets/scala-mode/try.finally elpa/yasnippet-0.9.1/snippets/scala-mode/tup.arrow elpa/yasnippet-0.9.1/snippets/scala-mode/tup.paren elpa/yasnippet-0.9.1/snippets/scala-mode/val elpa/yasnippet-0.9.1/snippets/scala-mode/val.new elpa/yasnippet-0.9.1/snippets/scala-mode/val.ret elpa/yasnippet-0.9.1/snippets/scala-mode/var elpa/yasnippet-0.9.1/snippets/scala-mode/var.new elpa/yasnippet-0.9.1/snippets/scala-mode/var.ret elpa/yasnippet-0.9.1/snippets/scala-mode/whi elpa/yasnippet-0.9.1/snippets/scala-mode/with elpa/yasnippet-0.9.1/snippets/snippet-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/snippet-mode/field elpa/yasnippet-0.9.1/snippets/snippet-mode/mirror elpa/yasnippet-0.9.1/snippets/snippet-mode/vars elpa/yasnippet-0.9.1/snippets/sql-mode/.yas-parents elpa/yasnippet-0.9.1/snippets/sql-mode/column elpa/yasnippet-0.9.1/snippets/sql-mode/constraint elpa/yasnippet-0.9.1/snippets/sql-mode/constraint.1 elpa/yasnippet-0.9.1/snippets/sql-mode/create elpa/yasnippet-0.9.1/snippets/sql-mode/create.1 elpa/yasnippet-0.9.1/snippets/sql-mode/references elpa/yasnippet-0.9.1/snippets/text-mode/email elpa/yasnippet-0.9.1/snippets/text-mode/time elpa/yasnippet-0.9.1/yasnippet-autoloads.el elpa/yasnippet-0.9.1/yasnippet-debug.el elpa/yasnippet-0.9.1/yasnippet-pkg.el elpa/yasnippet-0.9.1/yasnippet-tests.el elpa/yasnippet-0.9.1/yasnippet.el
diffstat 860 files changed, 15987 insertions(+), 1887 deletions(-) [+]
line wrap: on
line diff
deleted file mode 100644
--- a/elpa/company-0.8.12/company-pysmell.el
+++ /dev/null
@@ -1,69 +0,0 @@
-;;; company-pysmell.el --- company-mode completion back-end for pysmell.el
-
-;; Copyright (C) 2009-2011, 2013-2014  Free Software Foundation, Inc.
-
-;; Author: Nikolaj Schumacher
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-
-;;; Commentary:
-;;
-;; The main problem with using this backend is installing Pysmell.
-;; I couldn't manage to do that. --Dmitry
-
-;;; Code:
-
-(if t (require 'pysmell))               ;Don't load during compilation.
-(require 'company)
-(require 'cl-lib)
-
-(defvar-local company-pysmell--available-p 'unknown)
-
-(defun company-pysmell--available-p ()
-  (if (eq company-pysmell--available-p 'unknown)
-      (setq company-pysmell--available-p
-            (locate-dominating-file buffer-file-name "PYSMELLTAGS"))
-    company-pysmell--available-p))
-
-(defun company-pysmell--grab-symbol ()
-  (let ((symbol (company-grab-symbol)))
-    (when symbol
-      (cons symbol
-            (save-excursion
-              (let ((pos (point)))
-                (goto-char (- (point) (length symbol)))
-                (while (eq (char-before) ?.)
-                  (goto-char (1- (point)))
-                  (skip-syntax-backward "w_"))
-                (- pos (point))))))))
-
-;;;###autoload
-(defun company-pysmell (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for pysmell.
-This requires pysmell.el and pymacs.el."
-  (interactive (list 'interactive))
-  (cl-case command
-    (interactive (company-begin-backend 'company-pysmell))
-    (prefix (and (derived-mode-p 'python-mode)
-                 buffer-file-name
-                 (not (company-in-string-or-comment))
-                 (company-pysmell--available-p)
-                 (company-pysmell--grab-symbol)))
-    (candidates (delete "" (pysmell-get-all-completions)))))
-
-(provide 'company-pysmell)
-;;; company-pysmell.el ends here
deleted file mode 100644
--- a/elpa/company-0.8.12/company-ropemacs.el
+++ /dev/null
@@ -1,72 +0,0 @@
-;;; company-ropemacs.el --- company-mode completion back-end for ropemacs
-
-;; Copyright (C) 2009-2011, 2013-2014  Free Software Foundation, Inc.
-
-;; Author: Nikolaj Schumacher
-
-;; This file is part of GNU Emacs.
-
-;; GNU Emacs is free software: you can redistribute it and/or modify
-;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation, either version 3 of the License, or
-;; (at your option) any later version.
-
-;; GNU Emacs is distributed in the hope that it will be useful,
-;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-;; GNU General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
-
-
-;;; Commentary:
-;;
-
-;;; Code:
-
-(require 'cl-lib)
-
-(defun company-ropemacs--grab-symbol ()
-  (let ((symbol (company-grab-symbol)))
-    (when symbol
-      (cons symbol
-            (save-excursion
-              (let ((pos (point)))
-                (goto-char (- (point) (length symbol)))
-                (while (eq (char-before) ?.)
-                  (goto-char (1- (point)))
-                  (skip-syntax-backward "w_"))
-                (- pos (point))))))))
-
-(defun company-ropemacs-doc-buffer (candidate)
-  "Return buffer with docstring of CANDIDATE if it is available."
-  (let ((doc (company-with-candidate-inserted candidate (rope-get-doc))))
-    (when doc
-      (company-doc-buffer doc))))
-
-(defun company-ropemacs-location (candidate)
-  "Return location of CANDIDATE in cons form (FILE . LINE) if it is available."
-  (let ((location (company-with-candidate-inserted candidate
-                    (rope-definition-location))))
-    (when location
-      (cons (elt location 0) (elt location 1)))))
-
-(defun company-ropemacs (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for ropemacs.
-
-Depends on third-party code: Pymacs (both Python and Emacs packages),
-rope, ropemacs and ropemode.  Requires `ropemacs-mode' to be on."
-  (interactive (list 'interactive))
-  (cl-case command
-    (interactive (company-begin-backend 'company-ropemacs))
-    (prefix (and (bound-and-true-p ropemacs-mode)
-                 (not (company-in-string-or-comment))
-                 (company-ropemacs--grab-symbol)))
-    (candidates (mapcar (lambda (element) (concat arg element))
-                        (rope-completions)))
-    (doc-buffer (company-ropemacs-doc-buffer arg))
-    (location (company-ropemacs-location arg))))
-
-(provide 'company-ropemacs)
-;;; company-ropemacs.el ends here
rename from elpa/company-0.8.12.signed
rename to elpa/company-0.9.2.signed
--- a/elpa/company-0.8.12.signed
+++ b/elpa/company-0.9.2.signed
@@ -1,1 +1,1 @@
-Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org> (trust undefined) created at 2015-03-05T05:05:01-0500 using DSA
\ No newline at end of file
+Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org> (trust undefined) created at 2016-11-14T05:05:02-0500 using DSA
\ No newline at end of file
rename from elpa/company-0.8.12/.dir-locals.el
rename to elpa/company-0.9.2/.dir-locals.el
rename from elpa/company-0.8.12/.elpaignore
rename to elpa/company-0.9.2/.elpaignore
rename from elpa/company-0.8.12/ChangeLog
rename to elpa/company-0.9.2/ChangeLog
--- a/elpa/company-0.8.12/ChangeLog
+++ b/elpa/company-0.9.2/ChangeLog
@@ -1,3 +1,23 @@
+2016-11-14  Dmitry Gutov  <dgutov@yandex.ru>
+
+	Merge commit 'c9912e9ba7ef441677c1a9de7e14f78cb2da5e0e' from company
+
+2016-11-12  Dmitry Gutov  <dgutov@yandex.ru>
+
+	Merge commit 'e077caf1957f1846fae29aa84a021234c43be96f'
+
+2016-07-11  Paul Eggert	 <eggert@cs.ucla.edu>
+
+	Fix some quoting problems in doc strings
+
+	Most of these are minor issues involving, e.g., quoting `like this' 
+	instead of 'like this'.	 A few involve escaping ` and ' with a preceding
+	\= when the characters should not be turned into curved single quotes.
+
+2016-06-23  Dmitry Gutov  <dgutov@yandex.ru>
+
+	Merge commit '212c8fc3101781a2f1c55ca61772eb75a2046e87' from company
+
 2015-03-04  Dmitry Gutov  <dgutov@yandex.ru>
 
 	Merge commit 'e085a333867959a1b36015a3ad8e12e5bd6550d9' from company
@@ -162,8 +182,8 @@
 
 	* GNUmakefile: Rename from Makefile.  Add targets for in-place use.
 	(all, all-in-place): New targets.
-	* admin/archive-contents.el (archive--simple-package-p): Ignore
-	autosave files.
+	* admin/archive-contents.el (archive--simple-package-p): Ignore autosave
+	files.
 	(archive--refresh-pkg-file): New function.
 	(archive--write-pkg-file): Print with ' and ` shorthands.
 	* packages/company/company-pysmell.el: Don't require pysmell during
@@ -171,8 +191,7 @@
 	* packages/muse/htmlize-hack.el: Don't require htmlize during compile.
 	* packages/shen-mode/shen-mode.el (shen-functions): Define during
 	compile.
-	* smart-operator/smart-operator.el (smart-operator-insert-1): Use
-	pcase.
+	* smart-operator/smart-operator.el (smart-operator-insert-1): Use pcase.
 
 2013-05-26  Dmitry Gutov  <dgutov@yandex.ru>
 
@@ -193,8 +212,7 @@
 	* Mouse click outside the tooltip aborts completion.
 	* `company-clang` uses standard input to pass the contents of current
 	buffer to
-	 Clang 2.9+, otherwise saves the buffer and passes the path to the
-	file.
+	 Clang 2.9+, otherwise saves the buffer and passes the path to the file.
 	* `company-clang-auto-save` option has been removed.
 	* Better interaction with `outline-minor-mode`.
 	* `company-dabbrev-code` supports all `prog-mode` derivatives.
@@ -256,8 +274,7 @@
 
 	* Fixed keybindings when running in a terminal.
 	* `company-elisp-show-locals-first`: new customizable variable.
-	* `company-elisp` shows more accurate and comprehensive candidates
-	list.
+	* `company-elisp` shows more accurate and comprehensive candidates list.
 
 	## 2013-03-26 (0.6.4)
 
@@ -270,8 +287,7 @@
 	## 2013-03-25 (0.6.3)
 
 	* New tooltip face colors used on themes with light background.
-	* Pseudo-tooltip stays up-to-date when text is inserted after the
-	point.
+	* Pseudo-tooltip stays up-to-date when text is inserted after the point.
 	* Fixed `company-require-match` mechanics.
 
 2013-03-24  Dmitry Gutov  <dgutov@yandex.ru>
rename from elpa/company-0.8.12/NEWS.md
rename to elpa/company-0.9.2/NEWS.md
--- a/elpa/company-0.8.12/NEWS.md
+++ b/elpa/company-0.9.2/NEWS.md
@@ -1,5 +1,65 @@
 # History of user-visible changes
 
+## 2016-11-12 (0.9.1)
+
+* `company-indent-or-complete-common` skips trying to indent if
+  `indent-line-function` is `indent-relative` or `indent-relative-maybe`.
+* Better visualization of search matches. New face `company-tooltip-search-selection`.
+* New variable `company-files-exclusions`.
+* `company-next-page` and `company-previous-page` adhere to
+  `company-selection-wrap-around` docstring more closely and only wrap around
+  when the selection is at the start of the end of the list.
+* `company-pseudo-tooltip-unless-just-one-frontend-with-delay` handles custom
+  frontends derived from `company-preview-frontend` better.
+* `company-idle-delay` is automatically adjusted to a non-zero value.
+
+## 2016-06-23 (0.9.0)
+
+* Group of backends can now contain keyword `:separate`, which makes candidates
+  from different backends sorted separately in the combined list.
+* New frontend `company-pseudo-tooltip-unless-just-one-frontend-with-delay`.
+* New transformer `company-sort-prefer-same-case-prefix`.
+* The value of `company-dabbrev-ignore-buffers` can also be a function.
+* `company-files` has been moved to right after `company-capf` in
+  `company-backends`
+  ([#463](https://github.com/company-mode/company-mode/issues/463)).
+* `company-semantic-insert-arguments`: New option. Like in `company-clang`.
+* `company-semantic-begin-after-member-access`: New option. Similar to the one
+  in `company-clang`.
+* `company-capf` accepts `:company-prefix-length` property value.
+* New face `company-tooltip-annotation-selection`, used for the annotation in
+  the selected tooltip line.
+* `company-clang-objc-templatify` has been renamed to
+  `company-template-objc-templatify`.
+* New user option `company-etags-everywhere`.
+* `company-yasnippet` supports `yas-key-syntaxes` better. But we use them in the
+  reverse order, preferring the longest key prefix that matches anything. And we
+  only consider trigger key prefixes that are at least as long as the symbol at
+  point, which effectively means skipping the `"w"` element
+  ([#422](https://github.com/company-mode/company-mode/issues/422)).
+* New user option `company-search-regexp-function`.
+* Completion is not started automatically when a keyboard macro is being
+  recorded ([#374](https://github.com/company-mode/company-mode/issues/374)).
+* New command `company-indent-or-complete-common`.
+* Backend command `doc-buffer` now can also return a cons of buffer and window
+  start position.
+* Backend command `ignore-case` has been documented.
+* `company-template-c-like-templatify` does not replace the default argument
+  values with `argN` anymore
+  ([#336](https://github.com/company-mode/company-mode/issues/336)). This
+  affects `company-clang` and all third-party backends that use this function.
+* Likewise for `company-clang-objc-templatify`.
+* `company-template-add-field` calling convention has changed.
+* New user option `company-dabbrev-ignore-invisible`.
+* `company-ropemacs` was removed. `ropemacs` supports completion via
+  `completion-at-point-functions` starting with version 0.8.
+* `company-pysmell` was removed.
+* `company-select-next`, `company-select-previous`,
+  `company-select-next-or-abort`, `company-select-previous-or-abort` and
+  `company-complete-common-or-cycle` accept a numeric argument.
+* The documentation buffer window can be scrolled with the mouse wheel.
+* New command `company-diag`. Use it in bug reports.
+
 ## 2015-02-02 (0.8.10)
 
 * New variable `company-lighter-base`.
rename from elpa/company-0.8.12/README.md
rename to elpa/company-0.9.2/README.md
--- a/elpa/company-0.8.12/README.md
+++ b/elpa/company-0.9.2/README.md
@@ -1,4 +1,4 @@
 See the [homepage](http://company-mode.github.com/).
-[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/336ef4be2595a7859d52e2c17b7da2b2 "githalytics.com")](http://githalytics.com/company-mode/company-mode)
 
 [![Build Status](https://travis-ci.org/company-mode/company-mode.png?branch=master)](https://travis-ci.org/company-mode/company-mode)
+[![Melpa Status](http://melpa.milkbox.net/packages/company-badge.svg)](http://melpa.milkbox.net/#/company)
rename from elpa/company-0.8.12/company-abbrev.el
rename to elpa/company-0.9.2/company-abbrev.el
--- a/elpa/company-0.8.12/company-abbrev.el
+++ b/elpa/company-0.9.2/company-abbrev.el
@@ -1,6 +1,6 @@
-;;; company-abbrev.el --- company-mode completion back-end for abbrev
+;;; company-abbrev.el --- company-mode completion backend for abbrev
 
-;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011, 2015  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -35,7 +35,7 @@
 
 ;;;###autoload
 (defun company-abbrev (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for abbrev."
+  "`company-mode' completion backend for abbrev."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-abbrev
@@ -44,8 +44,7 @@
     (candidates (nconc
                  (delete "" (all-completions arg global-abbrev-table))
                  (delete "" (all-completions arg local-abbrev-table))))
-    (meta (abbrev-expansion arg))
-    (require-match t)))
+    (meta (abbrev-expansion arg))))
 
 (provide 'company-abbrev)
 ;;; company-abbrev.el ends here
rename from elpa/company-0.8.12/company-autoloads.el
rename to elpa/company-0.9.2/company-autoloads.el
--- a/elpa/company-0.8.12/company-autoloads.el
+++ b/elpa/company-0.9.2/company-autoloads.el
@@ -3,8 +3,8 @@
 ;;; Code:
 (add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
 
-;;;### (autoloads nil "company" "company.el" (21954 12868 340604
-;;;;;;  538000))
+;;;### (autoloads nil "company" "company.el" (22708 23358 347009
+;;;;;;  470000))
 ;;; Generated autoloads from company.el
 
 (autoload 'company-mode "company" "\
@@ -22,9 +22,12 @@
 inactive, as well.
 
 The completion data is retrieved using `company-backends' and displayed
-using `company-frontends'.  If you want to start a specific back-end, call
+using `company-frontends'.  If you want to start a specific backend, call
 it interactively or use `company-begin-backend'.
 
+By default, the completions list is sorted alphabetically, unless the
+backend chooses otherwise, or `company-transformers' changes it later.
+
 regular keymap (`company-mode-map'):
 
 \\{company-mode-map}
@@ -55,93 +58,106 @@
 
 \(fn &optional ARG)" t nil)
 
+(autoload 'company-manual-begin "company" "\
+
+
+\(fn)" t nil)
+
+(autoload 'company-complete "company" "\
+Insert the common part of all candidates or the current selection.
+The first time this is called, the common part is inserted, the second
+time, or when the selection has been changed, the selected candidate is
+inserted.
+
+\(fn)" t nil)
+
 ;;;***
 
-;;;### (autoloads nil "company-abbrev" "company-abbrev.el" (21954
-;;;;;;  12868 296604 536000))
+;;;### (autoloads nil "company-abbrev" "company-abbrev.el" (22708
+;;;;;;  23358 299009 285000))
 ;;; Generated autoloads from company-abbrev.el
 
 (autoload 'company-abbrev "company-abbrev" "\
-`company-mode' completion back-end for abbrev.
+`company-mode' completion backend for abbrev.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-bbdb" "company-bbdb.el" (21954 12868
-;;;;;;  344604 538000))
+;;;### (autoloads nil "company-bbdb" "company-bbdb.el" (22708 23358
+;;;;;;  351009 485000))
 ;;; Generated autoloads from company-bbdb.el
 
 (autoload 'company-bbdb "company-bbdb" "\
-`company-mode' completion back-end for BBDB.
+`company-mode' completion backend for BBDB.
 
 \(fn COMMAND &optional ARG &rest IGNORE)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-css" "company-css.el" (21954 12868
-;;;;;;  300604 536000))
+;;;### (autoloads nil "company-css" "company-css.el" (22708 23358
+;;;;;;  303009 300000))
 ;;; Generated autoloads from company-css.el
 
 (autoload 'company-css "company-css" "\
-`company-mode' completion back-end for `css-mode'.
+`company-mode' completion backend for `css-mode'.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-dabbrev" "company-dabbrev.el" (21954
-;;;;;;  12868 300604 536000))
+;;;### (autoloads nil "company-dabbrev" "company-dabbrev.el" (22708
+;;;;;;  23358 307009 316000))
 ;;; Generated autoloads from company-dabbrev.el
 
 (autoload 'company-dabbrev "company-dabbrev" "\
-dabbrev-like `company-mode' completion back-end.
+dabbrev-like `company-mode' completion backend.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
 ;;;### (autoloads nil "company-dabbrev-code" "company-dabbrev-code.el"
-;;;;;;  (21954 12868 356604 539000))
+;;;;;;  (22708 23358 363009 532000))
 ;;; Generated autoloads from company-dabbrev-code.el
 
 (autoload 'company-dabbrev-code "company-dabbrev-code" "\
-dabbrev-like `company-mode' back-end for code.
-The back-end looks for all symbols in the current buffer that aren't in
+dabbrev-like `company-mode' backend for code.
+The backend looks for all symbols in the current buffer that aren't in
 comments or strings.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-elisp" "company-elisp.el" (21954 12868
-;;;;;;  304604 537000))
+;;;### (autoloads nil "company-elisp" "company-elisp.el" (22708 23358
+;;;;;;  311009 332000))
 ;;; Generated autoloads from company-elisp.el
 
 (autoload 'company-elisp "company-elisp" "\
-`company-mode' completion back-end for Emacs Lisp.
+`company-mode' completion backend for Emacs Lisp.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-etags" "company-etags.el" (21954 12868
-;;;;;;  288604 536000))
+;;;### (autoloads nil "company-etags" "company-etags.el" (22708 23358
+;;;;;;  287009 239000))
 ;;; Generated autoloads from company-etags.el
 
 (autoload 'company-etags "company-etags" "\
-`company-mode' completion back-end for etags.
+`company-mode' completion backend for etags.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-files" "company-files.el" (21954 12868
-;;;;;;  304604 537000))
+;;;### (autoloads nil "company-files" "company-files.el" (22708 23358
+;;;;;;  311009 332000))
 ;;; Generated autoloads from company-files.el
 
 (autoload 'company-files "company-files" "\
-`company-mode' completion back-end existing file names.
+`company-mode' completion backend existing file names.
 Completions works for proper absolute and relative files paths.
 File paths with spaces are only supported inside strings.
 
@@ -149,140 +165,128 @@
 
 ;;;***
 
-;;;### (autoloads nil "company-gtags" "company-gtags.el" (21954 12868
-;;;;;;  356604 539000))
+;;;### (autoloads nil "company-gtags" "company-gtags.el" (22708 23358
+;;;;;;  363009 532000))
 ;;; Generated autoloads from company-gtags.el
 
 (autoload 'company-gtags "company-gtags" "\
-`company-mode' completion back-end for GNU Global.
+`company-mode' completion backend for GNU Global.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-ispell" "company-ispell.el" (21954
-;;;;;;  12868 284604 536000))
+;;;### (autoloads nil "company-ispell" "company-ispell.el" (22708
+;;;;;;  23358 283009 224000))
 ;;; Generated autoloads from company-ispell.el
 
 (autoload 'company-ispell "company-ispell" "\
-`company-mode' completion back-end using Ispell.
+`company-mode' completion backend using Ispell.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-keywords" "company-keywords.el" (21954
-;;;;;;  12868 288604 536000))
+;;;### (autoloads nil "company-keywords" "company-keywords.el" (22708
+;;;;;;  23358 287009 239000))
 ;;; Generated autoloads from company-keywords.el
 
 (autoload 'company-keywords "company-keywords" "\
-`company-mode' back-end for programming language keywords.
-
-\(fn COMMAND &optional ARG &rest IGNORED)" t nil)
-
-;;;***
-
-;;;### (autoloads nil "company-nxml" "company-nxml.el" (21954 12868
-;;;;;;  292604 536000))
-;;; Generated autoloads from company-nxml.el
-
-(autoload 'company-nxml "company-nxml" "\
-`company-mode' completion back-end for `nxml-mode'.
+`company-mode' backend for programming language keywords.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-oddmuse" "company-oddmuse.el" (21954
-;;;;;;  12868 308604 537000))
-;;; Generated autoloads from company-oddmuse.el
+;;;### (autoloads nil "company-nxml" "company-nxml.el" (22708 23358
+;;;;;;  291009 255000))
+;;; Generated autoloads from company-nxml.el
 
-(autoload 'company-oddmuse "company-oddmuse" "\
-`company-mode' completion back-end for `oddmuse-mode'.
+(autoload 'company-nxml "company-nxml" "\
+`company-mode' completion backend for `nxml-mode'.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-pysmell" "company-pysmell.el" (21954
-;;;;;;  12868 336604 538000))
-;;; Generated autoloads from company-pysmell.el
+;;;### (autoloads nil "company-oddmuse" "company-oddmuse.el" (22708
+;;;;;;  23358 315009 347000))
+;;; Generated autoloads from company-oddmuse.el
 
-(autoload 'company-pysmell "company-pysmell" "\
-`company-mode' completion back-end for pysmell.
-This requires pysmell.el and pymacs.el.
+(autoload 'company-oddmuse "company-oddmuse" "\
+`company-mode' completion backend for `oddmuse-mode'.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-semantic" "company-semantic.el" (21954
-;;;;;;  12868 368604 540000))
+;;;### (autoloads nil "company-semantic" "company-semantic.el" (22708
+;;;;;;  23358 371009 562000))
 ;;; Generated autoloads from company-semantic.el
 
 (autoload 'company-semantic "company-semantic" "\
-`company-mode' completion back-end using CEDET Semantic.
+`company-mode' completion backend using CEDET Semantic.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-tempo" "company-tempo.el" (21954 12868
-;;;;;;  348604 539000))
+;;;### (autoloads nil "company-tempo" "company-tempo.el" (22708 23358
+;;;;;;  355009 501000))
 ;;; Generated autoloads from company-tempo.el
 
 (autoload 'company-tempo "company-tempo" "\
-`company-mode' completion back-end for tempo.
+`company-mode' completion backend for tempo.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil "company-xcode" "company-xcode.el" (21954 12868
-;;;;;;  352604 539000))
+;;;### (autoloads nil "company-xcode" "company-xcode.el" (22708 23358
+;;;;;;  355009 501000))
 ;;; Generated autoloads from company-xcode.el
 
 (autoload 'company-xcode "company-xcode" "\
-`company-mode' completion back-end for Xcode projects.
+`company-mode' completion backend for Xcode projects.
 
 \(fn COMMAND &optional ARG &rest IGNORED)" t nil)
 
 ;;;***
 
 ;;;### (autoloads nil "company-yasnippet" "company-yasnippet.el"
-;;;;;;  (21954 12868 356604 539000))
+;;;;;;  (22708 23358 367009 546000))
 ;;; Generated autoloads from company-yasnippet.el
 
 (autoload 'company-yasnippet "company-yasnippet" "\
-`company-mode' back-end for `yasnippet'.
+`company-mode' backend for `yasnippet'.
 
-This back-end should be used with care, because as long as there are
-snippets defined for the current major mode, this back-end will always
-shadow back-ends that come after it.  Recommended usages:
+This backend should be used with care, because as long as there are
+snippets defined for the current major mode, this backend will always
+shadow backends that come after it.  Recommended usages:
 
-* In a buffer-local value of `company-backends', grouped with a back-end or
+* In a buffer-local value of `company-backends', grouped with a backend or
   several that provide actual text completions.
 
-  (add-hook 'js-mode-hook
+  (add-hook \\='js-mode-hook
             (lambda ()
-              (set (make-local-variable 'company-backends)
-                   '((company-dabbrev-code company-yasnippet)))))
+              (set (make-local-variable \\='company-backends)
+                   \\='((company-dabbrev-code company-yasnippet)))))
 
-* After keyword `:with', grouped with other back-ends.
+* After keyword `:with', grouped with other backends.
 
-  (push '(company-semantic :with company-yasnippet) company-backends)
+  (push \\='(company-semantic :with company-yasnippet) company-backends)
 
 * Not in `company-backends', just bound to a key.
 
-  (global-set-key (kbd \"C-c y\") 'company-yasnippet)
+  (global-set-key (kbd \"C-c y\") \\='company-yasnippet)
 
 \(fn COMMAND &optional ARG &rest IGNORE)" t nil)
 
 ;;;***
 
 ;;;### (autoloads nil nil ("company-capf.el" "company-clang.el" "company-cmake.el"
-;;;;;;  "company-eclim.el" "company-pkg.el" "company-ropemacs.el"
-;;;;;;  "company-template.el") (21954 12868 375764 380000))
+;;;;;;  "company-eclim.el" "company-pkg.el" "company-template.el")
+;;;;;;  (22708 23358 381466 507000))
 
 ;;;***
 
rename from elpa/company-0.8.12/company-bbdb.el
rename to elpa/company-0.9.2/company-bbdb.el
--- a/elpa/company-0.8.12/company-bbdb.el
+++ b/elpa/company-0.9.2/company-bbdb.el
@@ -1,6 +1,6 @@
-;;; company-bbdb.el --- company-mode completion back-end for BBDB in message-mode
+;;; company-bbdb.el --- company-mode completion backend for BBDB in message-mode
 
-;; Copyright (C) 2013-2014  Free Software Foundation, Inc.
+;; Copyright (C) 2013-2014, 2016  Free Software Foundation, Inc.
 
 ;; Author: Jan Tatarik <jan.tatarik@gmail.com>
 
@@ -28,7 +28,7 @@
 (declare-function bbdb-search "bbdb-com")
 
 (defgroup company-bbdb nil
-  "Completion back-end for BBDB."
+  "Completion backend for BBDB."
   :group 'company)
 
 (defcustom company-bbdb-modes '(message-mode)
@@ -44,13 +44,13 @@
 
 ;;;###autoload
 (defun company-bbdb (command &optional arg &rest ignore)
-  "`company-mode' completion back-end for BBDB."
+  "`company-mode' completion backend for BBDB."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-bbdb))
     (prefix (and (memq major-mode company-bbdb-modes)
                  (featurep 'bbdb-com)
-                 (looking-back "^\\(To\\|Cc\\|Bcc\\): *\\(.*\\)"
+                 (looking-back "^\\(To\\|Cc\\|Bcc\\): *.*? *\\([^,;]*\\)"
                                (line-beginning-position))
                  (match-string-no-properties 2)))
     (candidates (company-bbdb--candidates arg))
rename from elpa/company-0.8.12/company-capf.el
rename to elpa/company-0.9.2/company-capf.el
--- a/elpa/company-0.8.12/company-capf.el
+++ b/elpa/company-0.9.2/company-capf.el
@@ -1,6 +1,6 @@
-;;; company-capf.el --- company-mode completion-at-point-functions back-end -*- lexical-binding: t -*-
+;;; company-capf.el --- company-mode completion-at-point-functions backend -*- lexical-binding: t -*-
 
-;; Copyright (C) 2013-2014  Free Software Foundation, Inc.
+;; Copyright (C) 2013-2016  Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 
@@ -48,22 +48,36 @@
               ;; the latter comes later.
               (remove 'tags-completion-at-point-function
                       (default-value 'completion-at-point-functions)))
+             (completion-at-point-functions (company--capf-workaround))
              (data (run-hook-wrapped 'completion-at-point-functions
                                      ;; Ignore misbehaving functions.
                                      #'completion--capf-wrapper 'optimist)))
-    (when (and (consp (cdr data)) (numberp (nth 1 data))) data)))
+    (when (and (consp (cdr data)) (integer-or-marker-p (nth 1 data))) data)))
+
+(declare-function python-shell-get-process "python")
+
+(defun company--capf-workaround ()
+  ;; For http://debbugs.gnu.org/cgi/bugreport.cgi?bug=18067
+  (if (or (not (listp completion-at-point-functions))
+          (not (memq 'python-completion-complete-at-point completion-at-point-functions))
+          (python-shell-get-process))
+      completion-at-point-functions
+    (remq 'python-completion-complete-at-point completion-at-point-functions)))
 
 (defun company-capf (command &optional arg &rest _args)
-  "`company-mode' back-end using `completion-at-point-functions'."
+  "`company-mode' backend using `completion-at-point-functions'."
   (interactive (list 'interactive))
   (pcase command
     (`interactive (company-begin-backend 'company-capf))
     (`prefix
      (let ((res (company--capf-data)))
        (when res
-         (if (> (nth 2 res) (point))
-             'stop
-           (buffer-substring-no-properties (nth 1 res) (point))))))
+         (let ((length (plist-get (nthcdr 4 res) :company-prefix-length))
+               (prefix (buffer-substring-no-properties (nth 1 res) (point))))
+           (cond
+            ((> (nth 2 res) (point)) 'stop)
+            (length (cons prefix length))
+            (t prefix))))))
     (`candidates
      (let ((res (company--capf-data)))
        (when res
@@ -95,16 +109,16 @@
            (cdr (assq 'display-sort-function meta))))))
     (`match
      ;; Can't just use 0 when base-size (see above) is non-zero.
-     (let ((start (if (get-text-property 0 'font-lock-face arg)
+     (let ((start (if (get-text-property 0 'face arg)
                       0
-                    (next-single-property-change 0 'font-lock-face arg))))
+                    (next-single-property-change 0 'face arg))))
        (when start
          ;; completions-common-part comes first, but we can't just look for this
          ;; value because it can be in a list.
          (or
-          (let ((value (get-text-property start 'font-lock-face arg)))
+          (let ((value (get-text-property start 'face arg)))
             (text-property-not-all start (length arg)
-                                   'font-lock-face value arg))
+                                   'face value arg))
           (length arg)))))
     (`duplicates t)
     (`no-cache t)   ;Not much can be done here, as long as we handle
rename from elpa/company-0.8.12/company-clang.el
rename to elpa/company-0.9.2/company-clang.el
--- a/elpa/company-0.8.12/company-clang.el
+++ b/elpa/company-0.9.2/company-clang.el
@@ -1,6 +1,6 @@
-;;; company-clang.el --- company-mode completion back-end for Clang  -*- lexical-binding: t -*-
+;;; company-clang.el --- company-mode completion backend for Clang  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2009, 2011, 2013-2014  Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2011, 2013-2016  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -30,7 +30,7 @@
 (require 'cl-lib)
 
 (defgroup company-clang nil
-  "Completion back-end for Clang."
+  "Completion backend for Clang."
   :group 'company)
 
 (defcustom company-clang-executable
@@ -144,6 +144,18 @@
   (get-text-property 0 'meta candidate))
 
 (defun company-clang--annotation (candidate)
+  (let ((ann (company-clang--annotation-1 candidate)))
+    (if (not (and ann (string-prefix-p "(*)" ann)))
+        ann
+      (with-temp-buffer
+        (insert ann)
+        (search-backward ")")
+        (let ((pt (1+ (point))))
+          (re-search-forward ".\\_>" nil t)
+          (delete-region pt (point)))
+        (buffer-string)))))
+
+(defun company-clang--annotation-1 (candidate)
   (let ((meta (company-clang--meta candidate)))
     (cond
      ((null meta) nil)
@@ -191,9 +203,11 @@
         (buf (get-buffer-create "*clang-output*"))
         ;; Looks unnecessary in Emacs 25.1 and later.
         (process-adaptive-read-buffering nil))
-    (with-current-buffer buf (erase-buffer))
     (if (get-buffer-process buf)
         (funcall callback nil)
+      (with-current-buffer buf
+        (erase-buffer)
+        (setq buffer-undo-list t))
       (let ((process (apply #'start-process "company-clang" buf
                             company-clang-executable args)))
         (set-process-sentinel
@@ -275,26 +289,8 @@
             ver))
       0)))
 
-(defun company-clang-objc-templatify (selector)
-  (let* ((end (point-marker))
-         (beg (- (point) (length selector) 1))
-         (templ (company-template-declare-template beg end))
-         (cnt 0))
-    (save-excursion
-      (goto-char beg)
-      (catch 'stop
-        (while (search-forward ":" end t)
-          (when (looking-at "([^)]*) ?")
-            (delete-region (match-beginning 0) (match-end 0)))
-          (company-template-add-field templ (point) (format "arg%d" cnt))
-          (if (< (point) end)
-              (insert " ")
-            (throw 'stop t))
-          (cl-incf cnt))))
-    (company-template-move-to-first templ)))
-
 (defun company-clang (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for Clang.
+  "`company-mode' completion backend for Clang.
 Clang is a parser for C and ObjC.  Clang version 1.1 or newer is required.
 
 Additional command line arguments can be specified in
@@ -327,7 +323,7 @@
                        (when (and company-clang-insert-arguments anno)
                          (insert anno)
                          (if (string-match "\\`:[^:]" anno)
-                             (company-clang-objc-templatify anno)
+                             (company-template-objc-templatify anno)
                            (company-template-c-like-templatify
                             (concat arg anno))))))))
 
rename from elpa/company-0.8.12/company-cmake.el
rename to elpa/company-0.9.2/company-cmake.el
--- a/elpa/company-0.8.12/company-cmake.el
+++ b/elpa/company-0.9.2/company-cmake.el
@@ -1,4 +1,4 @@
-;;; company-cmake.el --- company-mode completion back-end for CMake
+;;; company-cmake.el --- company-mode completion backend for CMake
 
 ;; Copyright (C) 2013-2014  Free Software Foundation, Inc.
 
@@ -29,7 +29,7 @@
 (require 'cl-lib)
 
 (defgroup company-cmake nil
-  "Completion back-end for CMake."
+  "Completion backend for CMake."
   :group 'company)
 
 (defcustom company-cmake-executable
@@ -178,7 +178,7 @@
                                        (point-max))))))
 
 (defun company-cmake (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for CMake.
+  "`company-mode' completion backend for CMake.
 CMake is a cross-platform, open-source make system."
   (interactive (list 'interactive))
   (cl-case command
rename from elpa/company-0.8.12/company-css.el
rename to elpa/company-0.9.2/company-css.el
--- a/elpa/company-0.8.12/company-css.el
+++ b/elpa/company-0.9.2/company-css.el
@@ -1,4 +1,4 @@
-;;; company-css.el --- company-mode completion back-end for css-mode  -*- lexical-binding: t -*-
+;;; company-css.el --- company-mode completion backend for css-mode  -*- lexical-binding: t -*-
 
 ;; Copyright (C) 2009, 2011, 2014  Free Software Foundation, Inc.
 
@@ -26,6 +26,8 @@
 (require 'company)
 (require 'cl-lib)
 
+(declare-function web-mode-language-at-pos "web-mode" (&optional pos))
+
 (defconst company-css-property-alist
   ;; see http://www.w3.org/TR/CSS21/propidx.html
   '(("azimuth" angle "left-side" "far-left" "left" "center-left" "center"
@@ -411,11 +413,13 @@
 
 ;;;###autoload
 (defun company-css (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for `css-mode'."
+  "`company-mode' completion backend for `css-mode'."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-css))
-    (prefix (and (derived-mode-p 'css-mode)
+    (prefix (and (or (derived-mode-p 'css-mode)
+                     (and (derived-mode-p 'web-mode)
+                          (string= (web-mode-language-at-pos) "css")))
                  (or (company-grab company-css-tag-regexp 1)
                      (company-grab company-css-pseudo-regexp 1)
                      (company-grab company-css-property-value-regexp 2)
rename from elpa/company-0.8.12/company-dabbrev-code.el
rename to elpa/company-0.9.2/company-dabbrev-code.el
--- a/elpa/company-0.8.12/company-dabbrev-code.el
+++ b/elpa/company-0.9.2/company-dabbrev-code.el
@@ -1,4 +1,4 @@
-;;; company-dabbrev-code.el --- dabbrev-like company-mode back-end for code  -*- lexical-binding: t -*-
+;;; company-dabbrev-code.el --- dabbrev-like company-mode backend for code  -*- lexical-binding: t -*-
 
 ;; Copyright (C) 2009, 2011, 2014  Free Software Foundation, Inc.
 
@@ -30,7 +30,7 @@
 (require 'cl-lib)
 
 (defgroup company-dabbrev-code nil
-  "dabbrev-like completion back-end for code."
+  "dabbrev-like completion backend for code."
   :group 'company)
 
 (defcustom company-dabbrev-code-modes
@@ -40,10 +40,10 @@
   "Modes that use `company-dabbrev-code'.
 In all these modes (and their derivatives) `company-dabbrev-code' will
 complete only symbols, not text in comments or strings.  In other modes
-`company-dabbrev-code' will pass control to other back-ends
+`company-dabbrev-code' will pass control to other backends
 \(e.g. `company-dabbrev'\).  Value t means complete in all modes."
-  :type '(choice (repeat (symbol :tag "Major mode"))
-                 (const tag "All modes" t)))
+  :type '(choice (repeat :tag "Some modes" (symbol :tag "Major mode"))
+                 (const :tag "All modes" t)))
 
 (defcustom company-dabbrev-code-other-buffers t
   "Determines whether `company-dabbrev-code' should search other buffers.
@@ -69,7 +69,7 @@
   "Non-nil to ignore case when collecting completion candidates."
   :type 'boolean)
 
-(defsubst company-dabbrev-code--make-regexp (prefix)
+(defun company-dabbrev-code--make-regexp (prefix)
   (concat "\\_<" (if (equal prefix "")
                      "\\([a-zA-Z]\\|\\s_\\)"
                    (regexp-quote prefix))
@@ -77,8 +77,8 @@
 
 ;;;###autoload
 (defun company-dabbrev-code (command &optional arg &rest ignored)
-  "dabbrev-like `company-mode' back-end for code.
-The back-end looks for all symbols in the current buffer that aren't in
+  "dabbrev-like `company-mode' backend for code.
+The backend looks for all symbols in the current buffer that aren't in
 comments or strings."
   (interactive (list 'interactive))
   (cl-case command
@@ -96,7 +96,7 @@
                      (`t (list major-mode))
                      (`code company-dabbrev-code-modes)
                      (`all `all))
-                   t)))
+                   (not company-dabbrev-code-everywhere))))
     (ignore-case company-dabbrev-code-ignore-case)
     (duplicates t)))
 
rename from elpa/company-0.8.12/company-dabbrev.el
rename to elpa/company-0.9.2/company-dabbrev.el
--- a/elpa/company-0.8.12/company-dabbrev.el
+++ b/elpa/company-0.9.2/company-dabbrev.el
@@ -1,6 +1,6 @@
-;;; company-dabbrev.el --- dabbrev-like company-mode completion back-end  -*- lexical-binding: t -*-
+;;; company-dabbrev.el --- dabbrev-like company-mode completion backend  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2009, 2011, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2011, 2014, 2015, 2016  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -29,7 +29,7 @@
 (require 'cl-lib)
 
 (defgroup company-dabbrev nil
-  "dabbrev-like completion back-end."
+  "dabbrev-like completion backend."
   :group 'company)
 
 (defcustom company-dabbrev-other-buffers 'all
@@ -41,8 +41,11 @@
                  (const :tag "All" all)))
 
 (defcustom company-dabbrev-ignore-buffers "\\`[ *]"
-  "Regexp matching the names of buffers to ignore."
-  :type 'regexp)
+  "Regexp matching the names of buffers to ignore.
+Or a function that returns non-nil for such buffers."
+  :type '(choice (regexp :tag "Regexp")
+                 (function :tag "Predicate"))
+  :package-version '(company . "0.9.0"))
 
 (defcustom company-dabbrev-time-limit .1
   "Determines how many seconds `company-dabbrev' should look for matches."
@@ -74,46 +77,60 @@
   :type 'integer
   :package-version '(company . "0.8.3"))
 
-(defmacro company-dabrev--time-limit-while (test start limit &rest body)
+(defcustom company-dabbrev-ignore-invisible nil
+  "Non-nil to skip invisible text."
+  :type 'boolean
+  :package-version '(company . "0.9.0"))
+
+(defmacro company-dabbrev--time-limit-while (test start limit freq &rest body)
   (declare (indent 3) (debug t))
   `(let ((company-time-limit-while-counter 0))
      (catch 'done
        (while ,test
          ,@body
          (and ,limit
-              (eq (cl-incf company-time-limit-while-counter) 25)
+              (= (cl-incf company-time-limit-while-counter) ,freq)
               (setq company-time-limit-while-counter 0)
               (> (float-time (time-since ,start)) ,limit)
               (throw 'done 'company-time-out))))))
 
-(defsubst company-dabbrev--make-regexp (prefix)
-  (concat "\\<" (if (equal prefix "")
-              company-dabbrev-char-regexp
-            (regexp-quote prefix))
-          "\\(" company-dabbrev-char-regexp "\\)*\\>"))
+(defun company-dabbrev--make-regexp ()
+  (concat "\\(?:" company-dabbrev-char-regexp "\\)+"))
 
 (defun company-dabbrev--search-buffer (regexp pos symbols start limit
                                        ignore-comments)
   (save-excursion
-    (let (match)
+    (cl-labels ((maybe-collect-match
+                 ()
+                 (let ((match (match-string-no-properties 0)))
+                   (when (and (>= (length match) company-dabbrev-minimum-length)
+                              (not (and company-dabbrev-ignore-invisible
+                                        (invisible-p (match-beginning 0)))))
+                     (push match symbols)))))
       (goto-char (if pos (1- pos) (point-min)))
-      ;; search before pos
-      (company-dabrev--time-limit-while (re-search-backward regexp nil t)
-          start limit
-        (setq match (match-string-no-properties 0))
-        (if (and ignore-comments (company-in-string-or-comment))
-            (goto-char (nth 8 (syntax-ppss)))
-          (when (>= (length match) company-dabbrev-minimum-length)
-            (push match symbols))))
+      ;; Search before pos.
+      (let ((tmp-end (point)))
+        (company-dabbrev--time-limit-while (> tmp-end (point-min))
+            start limit 1
+          (ignore-errors
+            (forward-char -10000))
+          (forward-line 0)
+          (save-excursion
+            ;; Before, we used backward search, but it matches non-greedily, and
+            ;; that forced us to use the "beginning/end of word" anchors in
+            ;; `company-dabbrev--make-regexp'.  It's also about 2x slower.
+            (while (re-search-forward regexp tmp-end t)
+              (if (and ignore-comments (save-match-data (company-in-string-or-comment)))
+                  (re-search-forward "\\s>\\|\\s!\\|\\s\"" tmp-end t)
+                (maybe-collect-match))))
+          (setq tmp-end (point))))
       (goto-char (or pos (point-min)))
-      ;; search after pos
-      (company-dabrev--time-limit-while (re-search-forward regexp nil t)
-          start limit
-        (setq match (match-string-no-properties 0))
-        (if (and ignore-comments (company-in-string-or-comment))
+      ;; Search after pos.
+      (company-dabbrev--time-limit-while (re-search-forward regexp nil t)
+          start limit 25
+        (if (and ignore-comments (save-match-data (company-in-string-or-comment)))
             (re-search-forward "\\s>\\|\\s!\\|\\s\"" nil t)
-          (when (>= (length match) company-dabbrev-minimum-length)
-            (push match symbols))))
+          (maybe-collect-match)))
       symbols)))
 
 (defun company-dabbrev--search (regexp &optional limit other-buffer-modes
@@ -123,29 +140,43 @@
                                                   ignore-comments)))
     (when other-buffer-modes
       (cl-dolist (buffer (delq (current-buffer) (buffer-list)))
-        (with-current-buffer buffer
-          (when (if (eq other-buffer-modes 'all)
-                    (not (string-match-p company-dabbrev-ignore-buffers
-                                         (buffer-name)))
-                  (apply #'derived-mode-p other-buffer-modes))
-            (setq symbols
-                  (company-dabbrev--search-buffer regexp nil symbols start
-                                                  limit ignore-comments))))
+        (unless (if (stringp company-dabbrev-ignore-buffers)
+                    (string-match-p company-dabbrev-ignore-buffers
+                                    (buffer-name buffer))
+                  (funcall company-dabbrev-ignore-buffers buffer))
+          (with-current-buffer buffer
+            (when (or (eq other-buffer-modes 'all)
+                      (apply #'derived-mode-p other-buffer-modes))
+              (setq symbols
+                    (company-dabbrev--search-buffer regexp nil symbols start
+                                                    limit ignore-comments)))))
         (and limit
              (> (float-time (time-since start)) limit)
              (cl-return))))
     symbols))
 
+(defun company-dabbrev--prefix ()
+  ;; Not in the middle of a word.
+  (unless (looking-at company-dabbrev-char-regexp)
+    ;; Emacs can't do greedy backward-search.
+    (company-grab-line (format "\\(?:^\\| \\)[^ ]*?\\(\\(?:%s\\)*\\)"
+                               company-dabbrev-char-regexp)
+                       1)))
+
+(defun company-dabbrev--filter (prefix candidates)
+  (let ((completion-ignore-case company-dabbrev-ignore-case))
+    (all-completions prefix candidates)))
+
 ;;;###autoload
 (defun company-dabbrev (command &optional arg &rest ignored)
-  "dabbrev-like `company-mode' completion back-end."
+  "dabbrev-like `company-mode' completion backend."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-dabbrev))
-    (prefix (company-grab-word))
+    (prefix (company-dabbrev--prefix))
     (candidates
      (let* ((case-fold-search company-dabbrev-ignore-case)
-            (words (company-dabbrev--search (company-dabbrev--make-regexp arg)
+            (words (company-dabbrev--search (company-dabbrev--make-regexp)
                                             company-dabbrev-time-limit
                                             (pcase company-dabbrev-other-buffers
                                               (`t (list major-mode))
@@ -153,6 +184,7 @@
             (downcase-p (if (eq company-dabbrev-downcase 'case-replace)
                             case-replace
                           company-dabbrev-downcase)))
+       (setq words (company-dabbrev--filter arg words))
        (if downcase-p
            (mapcar 'downcase words)
          words)))
rename from elpa/company-0.8.12/company-eclim.el
rename to elpa/company-0.9.2/company-eclim.el
--- a/elpa/company-0.8.12/company-eclim.el
+++ b/elpa/company-0.9.2/company-eclim.el
@@ -1,6 +1,6 @@
-;;; company-eclim.el --- company-mode completion back-end for Eclim
+;;; company-eclim.el --- company-mode completion backend for Eclim
 
-;; Copyright (C) 2009, 2011, 2013  Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2011, 2013, 2015  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -21,10 +21,10 @@
 
 ;;; Commentary:
 ;;
-;; Using `emacs-eclim' together with (or instead of) this back-end is
+;; Using `emacs-eclim' together with (or instead of) this backend is
 ;; recommended, as it allows you to use other Eclim features.
 ;;
-;; The alternative back-end provided by `emacs-eclim' uses `yasnippet'
+;; The alternative backend provided by `emacs-eclim' uses `yasnippet'
 ;; instead of `company-template' to expand function calls, and it supports
 ;; some languages other than Java.
 
@@ -35,7 +35,7 @@
 (require 'cl-lib)
 
 (defgroup company-eclim nil
-  "Completion back-end for Eclim."
+  "Completion backend for Eclim."
   :group 'company)
 
 (defun company-eclim-executable-find ()
@@ -48,7 +48,9 @@
            (cl-return file)))))
 
 (defcustom company-eclim-executable
-  (or (executable-find "eclim") (company-eclim-executable-find))
+  (or (bound-and-true-p eclim-executable)
+      (executable-find "eclim")
+      (company-eclim-executable-find))
   "Location of eclim executable."
   :type 'file)
 
@@ -87,10 +89,11 @@
 
 (defun company-eclim--project-dir ()
   (if (eq company-eclim--project-dir 'unknown)
-      (setq company-eclim--project-dir
-            (directory-file-name
-             (expand-file-name
-              (locate-dominating-file buffer-file-name ".project"))))
+      (let ((dir (locate-dominating-file buffer-file-name ".project")))
+        (when dir
+          (setq company-eclim--project-dir
+                (directory-file-name
+                 (expand-file-name dir)))))
     company-eclim--project-dir))
 
 (defun company-eclim--project-name ()
@@ -153,7 +156,7 @@
       prefix)))
 
 (defun company-eclim (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for Eclim.
+  "`company-mode' completion backend for Eclim.
 Eclim provides access to Eclipse Java IDE features for other editors.
 
 Eclim version 1.7.13 or newer (?) is required.
rename from elpa/company-0.8.12/company-elisp.el
rename to elpa/company-0.9.2/company-elisp.el
--- a/elpa/company-0.8.12/company-elisp.el
+++ b/elpa/company-0.9.2/company-elisp.el
@@ -1,4 +1,4 @@
-;;; company-elisp.el --- company-mode completion back-end for Emacs Lisp -*- lexical-binding: t -*-
+;;; company-elisp.el --- company-mode completion backend for Emacs Lisp -*- lexical-binding: t -*-
 
 ;; Copyright (C) 2009, 2011-2013  Free Software Foundation, Inc.
 
@@ -31,12 +31,12 @@
 (require 'find-func)
 
 (defgroup company-elisp nil
-  "Completion back-end for Emacs Lisp."
+  "Completion backend for Emacs Lisp."
   :group 'company)
 
 (defcustom company-elisp-detect-function-context t
   "If enabled, offer Lisp functions only in appropriate contexts.
-Functions are offered for completion only after ' and \(."
+Functions are offered for completion only after \\=' and \(."
   :type '(choice (const :tag "Off" nil)
                  (const :tag "On" t)))
 
@@ -193,7 +193,7 @@
 
 ;;;###autoload
 (defun company-elisp (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for Emacs Lisp."
+  "`company-mode' completion backend for Emacs Lisp."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-elisp))
rename from elpa/company-0.8.12/company-etags.el
rename to elpa/company-0.9.2/company-etags.el
--- a/elpa/company-0.8.12/company-etags.el
+++ b/elpa/company-0.9.2/company-etags.el
@@ -1,4 +1,4 @@
-;;; company-etags.el --- company-mode completion back-end for etags
+;;; company-etags.el --- company-mode completion backend for etags
 
 ;; Copyright (C) 2009-2011, 2014  Free Software Foundation, Inc.
 
@@ -30,7 +30,7 @@
 (require 'etags)
 
 (defgroup company-etags nil
-  "Completion back-end for etags."
+  "Completion backend for etags."
   :group 'company)
 
 (defcustom company-etags-use-main-table-list t
@@ -45,17 +45,28 @@
   :type 'boolean
   :package-version '(company . "0.7.3"))
 
+(defcustom company-etags-everywhere nil
+  "Non-nil to offer completions in comments and strings.
+Set it to t or to a list of major modes."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "Any supported mode" t)
+                 (repeat :tag "Some major modes"
+                         (symbol :tag "Major mode")))
+  :package-version '(company . "0.9.0"))
+
 (defvar company-etags-modes '(prog-mode c-mode objc-mode c++-mode java-mode
                               jde-mode pascal-mode perl-mode python-mode))
 
 (defvar-local company-etags-buffer-table 'unknown)
 
 (defun company-etags-find-table ()
-  (let ((file (locate-dominating-file (or buffer-file-name
-                                          default-directory)
-                                      "TAGS")))
+  (let ((file (expand-file-name
+               "TAGS"
+               (locate-dominating-file (or buffer-file-name
+                                           default-directory)
+                                       "TAGS"))))
     (when (and file (file-regular-p file))
-      (list (expand-file-name file)))))
+      (list file))))
 
 (defun company-etags-buffer-table ()
   (or (and company-etags-use-main-table-list tags-table-list)
@@ -74,12 +85,14 @@
 
 ;;;###autoload
 (defun company-etags (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for etags."
+  "`company-mode' completion backend for etags."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-etags))
-    (prefix (and (apply 'derived-mode-p company-etags-modes)
-                 (not (company-in-string-or-comment))
+    (prefix (and (apply #'derived-mode-p company-etags-modes)
+                 (or (eq t company-etags-everywhere)
+                     (apply #'derived-mode-p company-etags-everywhere)
+                     (not (company-in-string-or-comment)))
                  (company-etags-buffer-table)
                  (or (company-grab-symbol) 'stop)))
     (candidates (company-etags--candidates arg))
rename from elpa/company-0.8.12/company-files.el
rename to elpa/company-0.9.2/company-files.el
--- a/elpa/company-0.8.12/company-files.el
+++ b/elpa/company-0.9.2/company-files.el
@@ -1,6 +1,6 @@
-;;; company-files.el --- company-mode completion back-end for file paths
+;;; company-files.el --- company-mode completion backend for file names
 
-;; Copyright (C) 2009-2011, 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011, 2014-2015  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -28,11 +28,40 @@
 (require 'company)
 (require 'cl-lib)
 
+(defgroup company-files nil
+  "Completion backend for file names."
+  :group 'company)
+
+(defcustom company-files-exclusions nil
+  "File name extensions and directory names to ignore.
+The values should use the same format as `completion-ignored-extensions'."
+  :type '(const string)
+  :package-version '(company . "0.9.1"))
+
 (defun company-files--directory-files (dir prefix)
-  (ignore-errors
-    (if (equal prefix "")
-        (directory-files dir nil "\\`[^.]\\|\\`.[^.]")
-      (file-name-all-completions prefix dir))))
+  ;; Don't use directory-files. It produces directories without trailing /.
+  (condition-case err
+      (let ((comp (sort (file-name-all-completions prefix dir)
+                        (lambda (s1 s2) (string-lessp (downcase s1) (downcase s2))))))
+        (when company-files-exclusions
+          (setq comp (company-files--exclusions-filtered comp)))
+        (if (equal prefix "")
+            (delete "../" (delete "./" comp))
+          comp))
+    (file-error nil)))
+
+(defun company-files--exclusions-filtered (completions)
+  (let* ((dir-exclusions (cl-delete-if-not #'company-files--trailing-slash-p
+                                           company-files-exclusions))
+         (file-exclusions (cl-set-difference company-files-exclusions
+                                             dir-exclusions)))
+    (cl-loop for c in completions
+             unless (if (company-files--trailing-slash-p c)
+                        (member c dir-exclusions)
+                      (cl-find-if (lambda (exclusion)
+                                    (string-suffix-p exclusion c))
+                                  file-exclusions))
+             collect c)))
 
 (defvar company-files--regexps
   (let* ((root (if (eq system-type 'windows-nt)
@@ -50,35 +79,47 @@
     (and (cl-dolist (regexp company-files--regexps)
            (when (setq file (company-grab-line regexp 1))
              (cl-return file)))
+         (company-files--connected-p file)
          (setq dir (file-name-directory file))
          (not (string-match "//" dir))
          (file-exists-p dir)
-         (file-name-all-completions (file-name-nondirectory file) dir)
          file)))
 
+(defun company-files--connected-p (file)
+  (or (not (file-remote-p file))
+      (file-remote-p file nil t)))
+
+(defun company-files--trailing-slash-p (file)
+  ;; `file-directory-p' is very expensive on remotes. We are relying on
+  ;; `file-name-all-completions' returning directories with trailing / instead.
+  (let ((len (length file)))
+    (and (> len 0) (eq (aref file (1- len)) ?/))))
+
 (defvar company-files--completion-cache nil)
 
 (defun company-files--complete (prefix)
   (let* ((dir (file-name-directory prefix))
-         (key (list (file-name-nondirectory prefix)
+         (file (file-name-nondirectory prefix))
+         (key (list file
                     (expand-file-name dir)
                     (nth 5 (file-attributes dir))))
-         (file (file-name-nondirectory prefix))
-         (completion-ignore-case read-file-name-completion-ignore-case)
-         candidates directories)
+         (completion-ignore-case read-file-name-completion-ignore-case))
     (unless (company-file--keys-match-p key (car company-files--completion-cache))
-      (dolist (file (company-files--directory-files dir file))
-        (setq file (concat dir file))
-        (push file candidates)
-        (when (file-directory-p file)
-          (push file directories)))
-      (dolist (directory (reverse directories))
-        ;; Add one level of children.
-        (dolist (child (company-files--directory-files directory ""))
-          (push (concat directory
-                        (unless (eq (aref directory (1- (length directory))) ?/) "/")
-                        child) candidates)))
-      (setq company-files--completion-cache (cons key (nreverse candidates))))
+      (let* ((candidates (mapcar (lambda (f) (concat dir f))
+                                 (company-files--directory-files dir file)))
+             (directories (unless (file-remote-p dir)
+                            (cl-remove-if-not (lambda (f)
+                                                (and (company-files--trailing-slash-p f)
+                                                     (not (file-remote-p f))
+                                                     (company-files--connected-p f)))
+                                              candidates)))
+             (children (and directories
+                            (cl-mapcan (lambda (d)
+                                         (mapcar (lambda (c) (concat d c))
+                                                 (company-files--directory-files d "")))
+                                       directories))))
+        (setq company-files--completion-cache
+              (cons key (append candidates children)))))
     (all-completions prefix
                      (cdr company-files--completion-cache))))
 
@@ -88,7 +129,7 @@
 
 ;;;###autoload
 (defun company-files (command &optional arg &rest ignored)
-  "`company-mode' completion back-end existing file names.
+  "`company-mode' completion backend existing file names.
 Completions works for proper absolute and relative files paths.
 File paths with spaces are only supported inside strings."
   (interactive (list 'interactive))
@@ -98,6 +139,8 @@
     (candidates (company-files--complete arg))
     (location (cons (dired-noselect
                      (file-name-directory (directory-file-name arg))) 1))
+    (post-completion (when (company-files--trailing-slash-p arg)
+                       (delete-char -1)))
     (sorted t)
     (no-cache t)))
 
rename from elpa/company-0.8.12/company-gtags.el
rename to elpa/company-0.9.2/company-gtags.el
--- a/elpa/company-0.8.12/company-gtags.el
+++ b/elpa/company-0.9.2/company-gtags.el
@@ -1,4 +1,4 @@
-;;; company-gtags.el --- company-mode completion back-end for GNU Global
+;;; company-gtags.el --- company-mode completion backend for GNU Global
 
 ;; Copyright (C) 2009-2011, 2014  Free Software Foundation, Inc.
 
@@ -26,10 +26,11 @@
 ;;; Code:
 
 (require 'company)
+(require 'company-template)
 (require 'cl-lib)
 
 (defgroup company-gtags nil
-  "Completion back-end for GNU Global."
+  "Completion backend for GNU Global."
   :group 'company)
 
 (defcustom company-gtags-executable
@@ -65,7 +66,8 @@
   (with-temp-buffer
     (let (tags)
       (when (= 0 (call-process company-gtags-executable nil
-                               (list (current-buffer) nil) nil "-xGq" (concat "^" prefix)))
+                               ;; "-T" goes through all the tag files listed in GTAGSLIBPATH
+                               (list (current-buffer) nil) nil "-xGqT" (concat "^" prefix)))
         (goto-char (point-min))
         (cl-loop while
                  (re-search-forward (concat
@@ -90,7 +92,7 @@
 
 ;;;###autoload
 (defun company-gtags (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for GNU Global."
+  "`company-mode' completion backend for GNU Global."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-gtags))
rename from elpa/company-0.8.12/company-ispell.el
rename to elpa/company-0.9.2/company-ispell.el
--- a/elpa/company-0.8.12/company-ispell.el
+++ b/elpa/company-0.9.2/company-ispell.el
@@ -1,6 +1,6 @@
-;;; company-ispell.el --- company-mode completion back-end using Ispell
+;;; company-ispell.el --- company-mode completion backend using Ispell
 
-;; Copyright (C) 2009-2011, 2013-2015  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011, 2013-2016  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -30,7 +30,7 @@
 (require 'ispell)
 
 (defgroup company-ispell nil
-  "Completion back-end using Ispell."
+  "Completion backend using Ispell."
   :group 'company)
 
 (defcustom company-ispell-dictionary nil
@@ -41,11 +41,16 @@
 
 (defvar company-ispell-available 'unknown)
 
+(defalias 'company-ispell--lookup-words
+  (if (fboundp 'ispell-lookup-words)
+      'ispell-lookup-words
+    'lookup-words))
+
 (defun company-ispell-available ()
   (when (eq company-ispell-available 'unknown)
     (condition-case err
         (progn
-          (lookup-words "WHATEVER")
+          (company-ispell--lookup-words "WHATEVER")
           (setq company-ispell-available t))
       (error
        (message "Company: ispell-look-command not found")
@@ -54,15 +59,16 @@
 
 ;;;###autoload
 (defun company-ispell (command &optional arg &rest ignored)
-  "`company-mode' completion back-end using Ispell."
+  "`company-mode' completion backend using Ispell."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-ispell))
     (prefix (when (company-ispell-available)
               (company-grab-word)))
     (candidates
-     (let ((words (lookup-words arg (or company-ispell-dictionary
-                                        ispell-complete-word-dict)))
+     (let ((words (company-ispell--lookup-words
+                   arg
+                   (or company-ispell-dictionary ispell-complete-word-dict)))
            (completion-ignore-case t))
        (if (string= arg "")
            ;; Small optimization.
rename from elpa/company-0.8.12/company-keywords.el
rename to elpa/company-0.9.2/company-keywords.el
--- a/elpa/company-0.8.12/company-keywords.el
+++ b/elpa/company-0.9.2/company-keywords.el
@@ -1,6 +1,6 @@
-;;; company-keywords.el --- A company back-end for programming language keywords
+;;; company-keywords.el --- A company backend for programming language keywords
 
-;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011, 2016  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -35,13 +35,16 @@
 (defvar company-keywords-alist
   ;; Please contribute corrections or additions.
   `((c++-mode
-     "asm" "auto" "bool" "break" "case" "catch" "char" "class" "const"
-     "const_cast" "continue" "default" "delete" "do" "double" "dynamic_cast"
-     "else" "enum" "explicit" "export" "extern" "false" "float" "for" "friend"
-     "goto" "if" "inline" "int" "long" "mutable" "namespace" "new"
-     "operator" "private" "protected" "public" "register" "reinterpret_cast"
-     "return" "short" "signed" "sizeof" "static" "static_cast" "struct" "switch"
-     "template" "this" "throw" "true" "try" "typedef" "typeid" "typename"
+     "alignas" "alignof" "asm" "auto" "bool" "break" "case" "catch" "char"
+     "char16_t" "char32_t" "class" "const" "const_cast" "constexpr" "continue"
+     "decltype" "default" "delete" "do" "double" "dynamic_cast" "else" "enum"
+     "explicit" "export" "extern" "false" "final" "float" "for" "friend"
+     "goto" "if" "inline" "int" "long" "mutable" "namespace" "new" "noexcept"
+     "nullptr" "operator" "override"
+     "private" "protected" "public" "register" "reinterpret_cast"
+     "return" "short" "signed" "sizeof" "static" "static_assert"
+     "static_cast" "struct" "switch" "template" "this" "thread_local"
+     "throw" "true" "try" "typedef" "typeid" "typename"
      "union" "unsigned" "using" "virtual" "void" "volatile" "wchar_t" "while")
     (c-mode
      "auto" "break" "case" "char" "const" "continue" "default" "do"
@@ -207,17 +210,41 @@
      "do" "else" "elsif"  "end" "ensure" "false" "for" "if" "in" "module"
      "next" "nil" "not" "or" "redo" "rescue" "retry" "return" "self" "super"
      "then" "true" "undef" "unless" "until" "when" "while" "yield")
+    ;; From https://doc.rust-lang.org/grammar.html#keywords
+    ;; but excluding unused reserved words: https://www.reddit.com/r/rust/comments/34fq0k/is_there_a_good_list_of_rusts_keywords/cqucvnj
+    (rust-mode
+     "Self"
+     "as" "box" "break" "const" "continue" "crate" "else" "enum" "extern"
+     "false" "fn" "for" "if" "impl" "in" "let" "loop" "macro" "match" "mod"
+     "move" "mut" "pub" "ref" "return" "self" "static" "struct" "super"
+     "trait" "true" "type" "unsafe" "use" "where" "while")
+    (scala-mode
+     "abstract" "case" "catch" "class" "def" "do" "else" "extends" "false"
+     "final" "finally" "for" "forSome" "if" "implicit" "import" "lazy" "match"
+     "new" "null" "object" "override" "package" "private" "protected"
+     "return" "sealed" "super" "this" "throw" "trait" "true" "try" "type" "val"
+     "var" "while" "with" "yield")
+    (julia-mode
+     "abstract" "break" "case" "catch" "const" "continue" "do" "else" "elseif"
+     "end" "eval" "export" "false" "finally" "for" "function" "global" "if"
+     "ifelse" "immutable" "import" "importall" "in" "let" "macro" "module"
+     "otherwise" "quote" "return" "switch" "throw" "true" "try" "type"
+     "typealias" "using" "while"
+     )
     ;; aliases
     (js2-mode . javascript-mode)
+    (js2-jsx-mode . javascript-mode)
     (espresso-mode . javascript-mode)
     (js-mode . javascript-mode)
+    (js-jsx-mode . javascript-mode)
     (cperl-mode . perl-mode)
-    (jde-mode . java-mode))
+    (jde-mode . java-mode)
+    (ess-julia-mode . julia-mode))
   "Alist mapping major-modes to sorted keywords for `company-keywords'.")
 
 ;;;###autoload
 (defun company-keywords (command &optional arg &rest ignored)
-  "`company-mode' back-end for programming language keywords."
+  "`company-mode' backend for programming language keywords."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-keywords))
rename from elpa/company-0.8.12/company-nxml.el
rename to elpa/company-0.9.2/company-nxml.el
--- a/elpa/company-0.8.12/company-nxml.el
+++ b/elpa/company-0.9.2/company-nxml.el
@@ -1,4 +1,4 @@
-;;; company-nxml.el --- company-mode completion back-end for nxml-mode
+;;; company-nxml.el --- company-mode completion backend for nxml-mode
 
 ;; Copyright (C) 2009-2011, 2013  Free Software Foundation, Inc.
 
@@ -121,7 +121,7 @@
 
 ;;;###autoload
 (defun company-nxml (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for `nxml-mode'."
+  "`company-mode' completion backend for `nxml-mode'."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-nxml))
rename from elpa/company-0.8.12/company-oddmuse.el
rename to elpa/company-0.9.2/company-oddmuse.el
--- a/elpa/company-0.8.12/company-oddmuse.el
+++ b/elpa/company-0.9.2/company-oddmuse.el
@@ -1,4 +1,4 @@
-;;; company-oddmuse.el --- company-mode completion back-end for oddmuse-mode
+;;; company-oddmuse.el --- company-mode completion backend for oddmuse-mode
 
 ;; Copyright (C) 2009-2011, 2014  Free Software Foundation, Inc.
 
@@ -27,7 +27,7 @@
 
 (require 'company)
 (require 'cl-lib)
-(eval-when-compile (require 'yaooddmuse nil t))
+(eval-when-compile (require 'yaoddmuse nil t))
 (eval-when-compile (require 'oddmuse nil t))
 
 (defvar company-oddmuse-link-regexp
@@ -42,7 +42,7 @@
 
 ;;;###autoload
 (defun company-oddmuse (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for `oddmuse-mode'."
+  "`company-mode' completion backend for `oddmuse-mode'."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-oddmuse))
rename from elpa/company-0.8.12/company-pkg.el
rename to elpa/company-0.9.2/company-pkg.el
--- a/elpa/company-0.8.12/company-pkg.el
+++ b/elpa/company-0.9.2/company-pkg.el
@@ -1,2 +1,2 @@
 ;; Generated package description from company.el
-(define-package "company" "0.8.12" "Modular text completion framework" '((emacs "24.1") (cl-lib "0.5")) :url "http://company-mode.github.io/" :keywords '("abbrev" "convenience" "matching"))
+(define-package "company" "0.9.2" "Modular text completion framework" '((emacs "24.1") (cl-lib "0.5")) :url "http://company-mode.github.io/" :keywords '("abbrev" "convenience" "matching"))
rename from elpa/company-0.8.12/company-semantic.el
rename to elpa/company-0.9.2/company-semantic.el
--- a/elpa/company-0.8.12/company-semantic.el
+++ b/elpa/company-0.9.2/company-semantic.el
@@ -1,6 +1,6 @@
-;;; company-semantic.el --- company-mode completion back-end using Semantic
+;;; company-semantic.el --- company-mode completion backend using Semantic
 
-;; Copyright (C) 2009-2011, 2013  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011, 2013-2016  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -26,6 +26,7 @@
 ;;; Code:
 
 (require 'company)
+(require 'company-template)
 (require 'cl-lib)
 
 (defvar semantic-idle-summary-function)
@@ -38,15 +39,30 @@
 (declare-function semantic-tag-start "semantic/tag")
 (declare-function semantic-tag-buffer "semantic/tag")
 (declare-function semantic-active-p "semantic")
+(declare-function semantic-format-tag-prototype "semantic/format")
 
 (defgroup company-semantic nil
-  "Completion back-end using Semantic."
+  "Completion backend using Semantic."
   :group 'company)
 
 (defcustom company-semantic-metadata-function 'company-semantic-summary-and-doc
   "The function turning a semantic tag into doc information."
   :type 'function)
 
+(defcustom company-semantic-begin-after-member-access t
+  "When non-nil, automatic completion will start whenever the current
+symbol is preceded by \".\", \"->\" or \"::\", ignoring
+`company-minimum-prefix-length'.
+
+If `company-begin-commands' is a list, it should include `c-electric-lt-gt'
+and `c-electric-colon', for automatic completion right after \">\" and
+\":\".")
+
+(defcustom company-semantic-insert-arguments t
+  "When non-nil, insert function arguments as a template after completion."
+  :type 'boolean
+  :package-version '(company . "0.9.0"))
+
 (defvar company-semantic-modes '(c-mode c++-mode jde-mode java-mode))
 
 (defvar-local company-semantic--current-tags nil
@@ -89,7 +105,7 @@
     (let ((completion-ignore-case nil)
           (context (semantic-analyze-current-context)))
       (setq company-semantic--current-tags
-            (semantic-analyze-possible-completions context))
+            (semantic-analyze-possible-completions context 'no-unique))
       (all-completions prefix company-semantic--current-tags))))
 
 (defun company-semantic-completions-raw (prefix)
@@ -100,33 +116,21 @@
   (delete "" (mapcar 'semantic-tag-name company-semantic--current-tags)))
 
 (defun company-semantic-annotation (argument tags)
-  (let* ((tag (assoc argument tags))
+  (let* ((tag (assq argument tags))
          (kind (when tag (elt tag 1))))
     (cl-case kind
       (function (let* ((prototype (semantic-format-tag-prototype tag nil nil))
                        (par-pos (string-match "(" prototype)))
                   (when par-pos (substring prototype par-pos)))))))
 
-(defun company-semantic--pre-prefix-length (prefix-length)
-  "Sum up the length of all chained symbols before POS.
-Symbols are chained by \".\" or \"->\"."
-  (save-excursion
-    (let ((pos (point)))
-      (goto-char (- (point) prefix-length))
-      (while (looking-back "->\\|\\.")
-        (goto-char (match-beginning 0))
-        (skip-syntax-backward "w_"))
-      (- pos (point)))))
-
-(defun company-semantic--grab ()
-  "Grab the semantic prefix, but return everything before -> or . as length."
-  (let ((symbol (company-grab-symbol)))
-    (when symbol
-      (cons symbol (company-semantic--pre-prefix-length (length symbol))))))
+(defun company-semantic--prefix ()
+  (if company-semantic-begin-after-member-access
+      (company-grab-symbol-cons "\\.\\|->\\|::" 2)
+    (company-grab-symbol)))
 
 ;;;###autoload
 (defun company-semantic (command &optional arg &rest ignored)
-  "`company-mode' completion back-end using CEDET Semantic."
+  "`company-mode' completion backend using CEDET Semantic."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-semantic))
@@ -134,9 +138,9 @@
                  (semantic-active-p)
                  (memq major-mode company-semantic-modes)
                  (not (company-in-string-or-comment))
-                 (or (company-semantic--grab) 'stop)))
+                 (or (company-semantic--prefix) 'stop)))
     (candidates (if (and (equal arg "")
-                         (not (looking-back "->\\|\\.")))
+                         (not (looking-back "->\\|\\." (- (point) 2))))
                     (company-semantic-completions-raw arg)
                   (company-semantic-completions arg)))
     (meta (funcall company-semantic-metadata-function
@@ -147,10 +151,17 @@
                  (assoc arg company-semantic--current-tags)))
     ;; Because "" is an empty context and doesn't return local variables.
     (no-cache (equal arg ""))
+    (duplicates t)
     (location (let ((tag (assoc arg company-semantic--current-tags)))
                 (when (buffer-live-p (semantic-tag-buffer tag))
                   (cons (semantic-tag-buffer tag)
-                        (semantic-tag-start tag)))))))
+                        (semantic-tag-start tag)))))
+    (post-completion (let ((anno (company-semantic-annotation
+                                  arg company-semantic--current-tags)))
+                       (when (and company-semantic-insert-arguments anno)
+                         (insert anno)
+                         (company-template-c-like-templatify (concat arg anno)))
+                       ))))
 
 (provide 'company-semantic)
 ;;; company-semantic.el ends here
rename from elpa/company-0.8.12/company-template.el
rename to elpa/company-0.9.2/company-template.el
--- a/elpa/company-0.8.12/company-template.el
+++ b/elpa/company-0.9.2/company-template.el
@@ -1,6 +1,6 @@
-;;; company-template.el
+;;; company-template.el --- utility library for template expansion
 
-;; Copyright (C) 2009, 2010, 2014 Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2010, 2014-2016 Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -93,16 +93,14 @@
         (delq templ company-template--buffer-templates))
   (delete-overlay templ))
 
-(defun company-template-add-field (templ pos text &optional display)
-  "Add new field to template TEMPL at POS, inserting TEXT.
+(defun company-template-add-field (templ beg end &optional display)
+  "Add new field to template TEMPL spanning from BEG to END.
 When DISPLAY is non-nil, set the respective property on the overlay.
 Leave point at the end of the field."
   (cl-assert templ)
-  (goto-char pos)
-  (insert text)
-  (when (> (point) (overlay-end templ))
-    (move-overlay templ (overlay-start templ) (point)))
-  (let ((ov (make-overlay pos (+ pos (length text))))
+  (when (> end (overlay-end templ))
+    (move-overlay templ (overlay-start templ) end))
+  (let ((ov (make-overlay beg end))
         (siblings (overlay-get templ 'company-template-fields)))
     ;; (overlay-put ov 'evaporate t)
     (overlay-put ov 'intangible t)
@@ -149,7 +147,6 @@
 (defun company-template-c-like-templatify (call)
   (let* ((end (point-marker))
          (beg (- (point) (length call)))
-         (cnt 0)
          (templ (company-template-declare-template beg end))
          paren-open paren-close)
     (with-syntax-table (make-syntax-table (syntax-table))
@@ -167,29 +164,51 @@
           (forward-char 1)
           (backward-sexp)
           (forward-char)
-          (setq cnt (company-template--c-like-args templ angle-close
-                                                   cnt))))
+          (company-template--c-like-args templ angle-close)))
+      (when (looking-back "\\((\\*)\\)(" (line-beginning-position))
+        (delete-region (match-beginning 1) (match-end 1)))
       (when paren-open
         (goto-char paren-open)
-        (company-template--c-like-args templ paren-close cnt)))
+        (company-template--c-like-args templ paren-close)))
     (if (overlay-get templ 'company-template-fields)
         (company-template-move-to-first templ)
       (company-template-remove-template templ)
       (goto-char end))))
 
-(defun company-template--c-like-args (templ end counter)
+(defun company-template--c-like-args (templ end)
   (let ((last-pos (point)))
     (while (re-search-forward "\\([^,]+\\),?" end 'move)
       (when (zerop (car (parse-partial-sexp last-pos (point))))
-        (let ((sig (buffer-substring-no-properties last-pos (match-end 1))))
-          (save-excursion
-            (company-template-add-field templ last-pos
-                                        (format "arg%d" counter) sig)
-            (delete-region (point) (+ (point) (length sig))))
-          (skip-chars-forward " ")
-          (setq last-pos (point))
-          (cl-incf counter)))))
-  counter)
+        (company-template-add-field templ last-pos (match-end 1))
+        (skip-chars-forward " ")
+        (setq last-pos (point))))))
+
+;; objc ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun company-template-objc-templatify (selector)
+  (let* ((end (point-marker))
+         (beg (- (point) (length selector) 1))
+         (templ (company-template-declare-template beg end))
+         (cnt 0))
+    (save-excursion
+      (goto-char beg)
+      (catch 'stop
+        (while (search-forward ":" end t)
+          (if (looking-at "\\(([^)]*)\\) ?")
+              (company-template-add-field templ (point) (match-end 1))
+            ;; Not sure which conditions this case manifests under, but
+            ;; apparently it did before, when I wrote the first test for this
+            ;; function.  FIXME: Revisit it.
+            (company-template-add-field templ (point)
+                                        (progn
+                                          (insert (format "arg%d" cnt))
+                                          (point)))
+            (when (< (point) end)
+              (insert " "))
+            (cl-incf cnt))
+          (when (>= (point) end)
+            (throw 'stop t)))))
+    (company-template-move-to-first templ)))
 
 (provide 'company-template)
 ;;; company-template.el ends here
rename from elpa/company-0.8.12/company-tempo.el
rename to elpa/company-0.9.2/company-tempo.el
--- a/elpa/company-0.8.12/company-tempo.el
+++ b/elpa/company-0.9.2/company-tempo.el
@@ -1,6 +1,6 @@
-;;; company-tempo.el --- company-mode completion back-end for tempo
+;;; company-tempo.el --- company-mode completion backend for tempo
 
-;; Copyright (C) 2009-2011  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2011, 2015  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 
@@ -29,6 +29,15 @@
 (require 'cl-lib)
 (require 'tempo)
 
+(defgroup company-tempo nil
+  "Tempo completion backend."
+  :group 'company)
+
+(defcustom company-tempo-expand nil
+  "Whether to expand a tempo tag after completion."
+  :type '(choice (const :tag "Off" nil)
+                 (const :tag "On" t)))
+
 (defsubst company-tempo-lookup (match)
   (cdr (assoc match (tempo-build-collection))))
 
@@ -48,15 +57,14 @@
 
 ;;;###autoload
 (defun company-tempo (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for tempo."
+  "`company-mode' completion backend for tempo."
   (interactive (list 'interactive))
   (cl-case command
-    (interactive (company-begin-backend 'company-tempo
-                                        'company-tempo-insert))
+    (interactive (company-begin-backend 'company-tempo))
     (prefix (or (car (tempo-find-match-string tempo-match-finder)) ""))
     (candidates (all-completions arg (tempo-build-collection)))
     (meta (company-tempo-meta arg))
-    (require-match t)
+    (post-completion (when company-tempo-expand (company-tempo-insert arg)))
     (sorted t)))
 
 (provide 'company-tempo)
rename from elpa/company-0.8.12/company-xcode.el
rename to elpa/company-0.9.2/company-xcode.el
--- a/elpa/company-0.8.12/company-xcode.el
+++ b/elpa/company-0.9.2/company-xcode.el
@@ -1,4 +1,4 @@
-;;; company-xcode.el --- company-mode completion back-end for Xcode projects
+;;; company-xcode.el --- company-mode completion backend for Xcode projects
 
 ;; Copyright (C) 2009-2011, 2014  Free Software Foundation, Inc.
 
@@ -29,7 +29,7 @@
 (require 'cl-lib)
 
 (defgroup company-xcode nil
-  "Completion back-end for Xcode projects."
+  "Completion backend for Xcode projects."
   :group 'company)
 
 (defcustom company-xcode-xcodeindex-executable (executable-find "xcodeindex")
@@ -106,7 +106,7 @@
                         company-xcode-tags))))))
 ;;;###autoload
 (defun company-xcode (command &optional arg &rest ignored)
-  "`company-mode' completion back-end for Xcode projects."
+  "`company-mode' completion backend for Xcode projects."
   (interactive (list 'interactive))
   (cl-case command
     (interactive (company-begin-backend 'company-xcode))
rename from elpa/company-0.8.12/company-yasnippet.el
rename to elpa/company-0.9.2/company-yasnippet.el
--- a/elpa/company-0.8.12/company-yasnippet.el
+++ b/elpa/company-0.9.2/company-yasnippet.el
@@ -1,6 +1,6 @@
-;;; company-yasnippet.el --- company-mode completion back-end for Yasnippet
+;;; company-yasnippet.el --- company-mode completion backend for Yasnippet
 
-;; Copyright (C) 2014  Free Software Foundation, Inc.
+;; Copyright (C) 2014, 2015  Free Software Foundation, Inc.
 
 ;; Author: Dmitry Gutov
 
@@ -33,8 +33,47 @@
 (declare-function yas-expand-snippet "yasnippet")
 (declare-function yas--template-content "yasnippet")
 (declare-function yas--template-expand-env "yasnippet")
+(declare-function yas--warning "yasnippet")
+
+(defun company-yasnippet--key-prefixes ()
+  ;; Mostly copied from `yas--templates-for-key-at-point'.
+  (defvar yas-key-syntaxes)
+  (save-excursion
+    (let ((original (point))
+          (methods yas-key-syntaxes)
+          prefixes
+          method)
+      (while methods
+        (unless (eq method (car methods))
+          (goto-char original))
+        (setq method (car methods))
+        (cond ((stringp method)
+               (skip-syntax-backward method)
+               (setq methods (cdr methods)))
+              ((functionp method)
+               (unless (eq (funcall method original)
+                           'again)
+                 (setq methods (cdr methods))))
+              (t
+               (setq methods (cdr methods))
+               (yas--warning "Invalid element `%s' in `yas-key-syntaxes'" method)))
+        (let ((prefix (buffer-substring-no-properties (point) original)))
+          (unless (equal prefix (car prefixes))
+            (push prefix prefixes))))
+      prefixes)))
 
 (defun company-yasnippet--candidates (prefix)
+  ;; Process the prefixes in reverse: unlike Yasnippet, we look for prefix
+  ;; matches, so the longest prefix with any matches should be the most useful.
+  (cl-loop with tables = (yas--get-snippet-tables)
+           for key-prefix in (company-yasnippet--key-prefixes)
+           ;; Only consider keys at least as long as the symbol at point.
+           when (>= (length key-prefix) (length prefix))
+           thereis (company-yasnippet--completions-for-prefix prefix
+                                                              key-prefix
+                                                              tables)))
+
+(defun company-yasnippet--completions-for-prefix (prefix key-prefix tables)
   (cl-mapcan
    (lambda (table)
      (let ((keyhash (yas--table-hash table))
@@ -43,42 +82,44 @@
          (maphash
           (lambda (key value)
             (when (and (stringp key)
-                       (string-prefix-p prefix key))
+                       (string-prefix-p key-prefix key))
               (maphash
                (lambda (name template)
                  (push
                   (propertize key
                               'yas-annotation name
-                              'yas-template template)
+                              'yas-template template
+                              'yas-prefix-offset (- (length key-prefix)
+                                                    (length prefix)))
                   res))
                value)))
           keyhash))
        res))
-   (yas--get-snippet-tables)))
+   tables))
 
 ;;;###autoload
 (defun company-yasnippet (command &optional arg &rest ignore)
-  "`company-mode' back-end for `yasnippet'.
+  "`company-mode' backend for `yasnippet'.
 
-This back-end should be used with care, because as long as there are
-snippets defined for the current major mode, this back-end will always
-shadow back-ends that come after it.  Recommended usages:
+This backend should be used with care, because as long as there are
+snippets defined for the current major mode, this backend will always
+shadow backends that come after it.  Recommended usages:
 
-* In a buffer-local value of `company-backends', grouped with a back-end or
+* In a buffer-local value of `company-backends', grouped with a backend or
   several that provide actual text completions.
 
-  (add-hook 'js-mode-hook
+  (add-hook \\='js-mode-hook
             (lambda ()
-              (set (make-local-variable 'company-backends)
-                   '((company-dabbrev-code company-yasnippet)))))
+              (set (make-local-variable \\='company-backends)
+                   \\='((company-dabbrev-code company-yasnippet)))))
 
-* After keyword `:with', grouped with other back-ends.
+* After keyword `:with', grouped with other backends.
 
-  (push '(company-semantic :with company-yasnippet) company-backends)
+  (push \\='(company-semantic :with company-yasnippet) company-backends)
 
 * Not in `company-backends', just bound to a key.
 
-  (global-set-key (kbd \"C-c y\") 'company-yasnippet)
+  (global-set-key (kbd \"C-c y\") \\='company-yasnippet)
 "
   (interactive (list 'interactive))
   (cl-case command
@@ -93,10 +134,12 @@
       (unless company-tooltip-align-annotations " -> ")
       (get-text-property 0 'yas-annotation arg)))
     (candidates (company-yasnippet--candidates arg))
+    (no-cache t)
     (post-completion
-     (let ((template (get-text-property 0 'yas-template arg)))
+     (let ((template (get-text-property 0 'yas-template arg))
+           (prefix-offset (get-text-property 0 'yas-prefix-offset arg)))
        (yas-expand-snippet (yas--template-content template)
-                           (- (point) (length arg))
+                           (- (point) (length arg) prefix-offset)
                            (point)
                            (yas--template-expand-env template))))))
 
rename from elpa/company-0.8.12/company.el
rename to elpa/company-0.9.2/company.el
--- a/elpa/company-0.8.12/company.el
+++ b/elpa/company-0.9.2/company.el
@@ -1,11 +1,11 @@
 ;;; company.el --- Modular text completion framework  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2009-2015  Free Software Foundation, Inc.
+;; Copyright (C) 2009-2016  Free Software Foundation, Inc.
 
 ;; Author: Nikolaj Schumacher
 ;; Maintainer: Dmitry Gutov <dgutov@yandex.ru>
 ;; URL: http://company-mode.github.io/
-;; Version: 0.8.12
+;; Version: 0.9.2
 ;; Keywords: abbrev, convenience, matching
 ;; Package-Requires: ((emacs "24.1") (cl-lib "0.5"))
 
@@ -26,37 +26,32 @@
 
 ;;; Commentary:
 ;;
-;; Company is a modular completion mechanism.  Modules for retrieving completion
-;; candidates are called back-ends, modules for displaying them are front-ends.
+;; Company is a modular completion framework.  Modules for retrieving completion
+;; candidates are called backends, modules for displaying them are frontends.
 ;;
-;; Company comes with many back-ends, e.g. `company-elisp'.  These are
+;; Company comes with many backends, e.g. `company-etags'.  These are
 ;; distributed in separate files and can be used individually.
 ;;
-;; Place company.el and the back-ends you want to use in a directory and add the
-;; following to your .emacs:
-;; (add-to-list 'load-path "/path/to/company")
-;; (autoload 'company-mode "company" nil t)
+;; Enable `company-mode' in all buffers with M-x global-company-mode.  For
+;; further information look at the documentation for `company-mode' (C-h f
+;; company-mode RET).
 ;;
-;; Enable company-mode with M-x company-mode.  For further information look at
-;; the documentation for `company-mode' (C-h f company-mode RET)
-;;
-;; If you want to start a specific back-end, call it interactively or use
+;; If you want to start a specific backend, call it interactively or use
 ;; `company-begin-backend'.  For example:
 ;; M-x company-abbrev will prompt for and insert an abbrev.
 ;;
-;; To write your own back-end, look at the documentation for `company-backends'.
+;; To write your own backend, look at the documentation for `company-backends'.
 ;; Here is a simple example completing "foo":
 ;;
 ;; (defun company-my-backend (command &optional arg &rest ignored)
 ;;   (pcase command
-;;     (`prefix (when (looking-back "foo\\>")
-;;               (match-string 0)))
+;;     (`prefix (company-grab-symbol))
 ;;     (`candidates (list "foobar" "foobaz" "foobarbaz"))
 ;;     (`meta (format "This value is named %s" arg))))
 ;;
-;; Sometimes it is a good idea to mix several back-ends together, for example to
-;; enrich gtags with dabbrev-code results (to emulate local variables).
-;; To do this, add a list with both back-ends as an element in company-backends.
+;; Sometimes it is a good idea to mix several backends together, for example to
+;; enrich gtags with dabbrev-code results (to emulate local variables).  To do
+;; this, add a list with both backends as an element in `company-backends'.
 ;;
 ;;; Change Log:
 ;;
@@ -66,6 +61,7 @@
 
 (require 'cl-lib)
 (require 'newcomment)
+(require 'pcase)
 
 ;; FIXME: Use `user-error'.
 (add-to-list 'debug-ignored-errors "^.* frontend cannot be used twice$")
@@ -74,7 +70,7 @@
 (add-to-list 'debug-ignored-errors "^Company not ")
 (add-to-list 'debug-ignored-errors "^No candidate number ")
 (add-to-list 'debug-ignored-errors "^Cannot complete at point$")
-(add-to-list 'debug-ignored-errors "^No other back-end$")
+(add-to-list 'debug-ignored-errors "^No other backend$")
 
 ;;; Compatibility
 (eval-and-compile
@@ -87,7 +83,17 @@
       (declare (debug defvar) (doc-string 3))
       `(progn
          (defvar ,var ,val ,docstring)
-         (make-variable-buffer-local ',var)))))
+         (make-variable-buffer-local ',var))))
+
+  (unless (fboundp 'string-suffix-p)
+    (defun string-suffix-p (suffix string  &optional ignore-case)
+      "Return non-nil if SUFFIX is a suffix of STRING.
+If IGNORE-CASE is non-nil, the comparison is done without paying
+attention to case differences."
+      (let ((start-pos (- (length string) (length suffix))))
+        (and (>= start-pos 0)
+             (eq t (compare-strings suffix nil nil
+                                    string start-pos nil ignore-case)))))))
 
 (defgroup company nil
   "Extensible inline text completion mechanism"
@@ -104,8 +110,7 @@
   "Face used for the tooltip.")
 
 (defface company-tooltip-selection
-  '((default :inherit company-tooltip)
-    (((class color) (min-colors 88) (background light))
+  '((((class color) (min-colors 88) (background light))
      (:background "light blue"))
     (((class color) (min-colors 88) (background dark))
      (:background "orange1"))
@@ -113,36 +118,38 @@
   "Face used for the selection in the tooltip.")
 
 (defface company-tooltip-search
-  '((default :inherit company-tooltip-selection))
+  '((default :inherit highlight))
   "Face used for the search string in the tooltip.")
 
+(defface company-tooltip-search-selection
+  '((default :inherit highlight))
+  "Face used for the search string inside the selection in the tooltip.")
+
 (defface company-tooltip-mouse
   '((default :inherit highlight))
   "Face used for the tooltip item under the mouse.")
 
 (defface company-tooltip-common
-  '((default :inherit company-tooltip)
-    (((background light))
+  '((((background light))
      :foreground "darkred")
     (((background dark))
      :foreground "red"))
   "Face used for the common completion in the tooltip.")
 
 (defface company-tooltip-common-selection
-  '((default :inherit company-tooltip-selection)
-    (((background light))
-     :foreground "darkred")
-    (((background dark))
-     :foreground "red"))
+  '((default :inherit company-tooltip-common))
   "Face used for the selected common completion in the tooltip.")
 
 (defface company-tooltip-annotation
-  '((default :inherit company-tooltip)
-    (((background light))
+  '((((background light))
      :foreground "firebrick4")
     (((background dark))
      :foreground "red4"))
-  "Face used for the annotation in the tooltip.")
+  "Face used for the completion annotation in the tooltip.")
+
+(defface company-tooltip-annotation-selection
+  '((default :inherit company-tooltip-annotation))
+  "Face used for the selected completion annotation in the tooltip.")
 
 (defface company-scrollbar-fg
   '((((background light))
@@ -152,8 +159,7 @@
   "Face used for the tooltip scrollbar thumb.")
 
 (defface company-scrollbar-bg
-  '((default :inherit company-tooltip)
-    (((background light))
+  '((((background light))
      :background "wheat")
     (((background dark))
      :background "gold"))
@@ -161,7 +167,7 @@
 
 (defface company-preview
   '((((background light))
-     :inherit company-tooltip-selection)
+     :inherit (company-tooltip-selection company-tooltip))
     (((background dark))
      :background "blue4"
      :foreground "wheat"))
@@ -169,7 +175,7 @@
 
 (defface company-preview-common
   '((((background light))
-     :inherit company-tooltip-selection)
+     :inherit company-tooltip-common-selection)
     (((background dark))
      :inherit company-preview
      :foreground "red"))
@@ -194,9 +200,13 @@
 (defun company-frontends-set (variable value)
   ;; Uniquify.
   (let ((value (delete-dups (copy-sequence value))))
-    (and (memq 'company-pseudo-tooltip-unless-just-one-frontend value)
-         (memq 'company-pseudo-tooltip-frontend value)
-         (error "Pseudo tooltip frontend cannot be used twice"))
+    (and (or (and (memq 'company-pseudo-tooltip-unless-just-one-frontend value)
+                  (memq 'company-pseudo-tooltip-frontend value))
+             (and (memq 'company-pseudo-tooltip-unless-just-one-frontend-with-delay value)
+                  (memq 'company-pseudo-tooltip-frontend value))
+             (and (memq 'company-pseudo-tooltip-unless-just-one-frontend-with-delay value)
+                  (memq 'company-pseudo-tooltip-unless-just-one-frontend value)))
+         (error "Pseudo tooltip frontend cannot be used more than once"))
     (and (memq 'company-preview-if-just-one-frontend value)
          (memq 'company-preview-frontend value)
          (error "Preview frontend cannot be used twice"))
@@ -212,8 +222,8 @@
 (defcustom company-frontends '(company-pseudo-tooltip-unless-just-one-frontend
                                company-preview-if-just-one-frontend
                                company-echo-metadata-frontend)
-  "The list of active front-ends (visualizations).
-Each front-end is a function that takes one argument.  It is called with
+  "The list of active frontends (visualizations).
+Each frontend is a function that takes one argument.  It is called with
 one of the following arguments:
 
 `show': When the visualization should start.
@@ -241,6 +251,8 @@
                                 company-pseudo-tooltip-frontend)
                          (const :tag "pseudo tooltip, multiple only"
                                 company-pseudo-tooltip-unless-just-one-frontend)
+                         (const :tag "pseudo tooltip, multiple only, delayed"
+                                company-pseudo-tooltip-unless-just-one-frontend-with-delay)
                          (const :tag "preview" company-preview-frontend)
                          (const :tag "preview, unique only"
                                 company-preview-if-just-one-frontend)
@@ -300,8 +312,6 @@
     (company-keywords . "Programming language keywords")
     (company-nxml . "nxml")
     (company-oddmuse . "Oddmuse")
-    (company-pysmell . "PySmell")
-    (company-ropemacs . "ropemacs")
     (company-semantic . "Semantic")
     (company-tempo . "Tempo templates")
     (company-xcode . "Xcode")))
@@ -315,37 +325,39 @@
                         (assq backend company-safe-backends))
                 (cl-return t))))))
 
-(defcustom company-backends `(,@(unless (version< "24.3.50" emacs-version)
+(defcustom company-backends `(,@(unless (version< "24.3.51" emacs-version)
                                   (list 'company-elisp))
                               company-bbdb
                               company-nxml company-css
                               company-eclim company-semantic company-clang
-                              company-xcode company-ropemacs company-cmake
+                              company-xcode company-cmake
                               company-capf
+                              company-files
                               (company-dabbrev-code company-gtags company-etags
                                company-keywords)
-                              company-oddmuse company-files company-dabbrev)
-  "The list of active back-ends (completion engines).
-
-Only one back-end is used at a time.  The choice depends on the order of
+                              company-oddmuse company-dabbrev)
+  "The list of active backends (completion engines).
+
+Only one backend is used at a time.  The choice depends on the order of
 the items in this list, and on the values they return in response to the
-`prefix' command (see below).  But a back-end can also be a \"grouped\"
+`prefix' command (see below).  But a backend can also be a \"grouped\"
 one (see below).
 
-`company-begin-backend' can be used to start a specific back-end,
-`company-other-backend' will skip to the next matching back-end in the list.
-
-Each back-end is a function that takes a variable number of arguments.
-The first argument is the command requested from the back-end.  It is one
+`company-begin-backend' can be used to start a specific backend,
+`company-other-backend' will skip to the next matching backend in the list.
+
+Each backend is a function that takes a variable number of arguments.
+The first argument is the command requested from the backend.  It is one
 of the following:
 
-`prefix': The back-end should return the text to be completed.  It must be
+`prefix': The backend should return the text to be completed.  It must be
 text immediately before point.  Returning nil from this command passes
-control to the next back-end.  The function should return `stop' if it
+control to the next backend.  The function should return `stop' if it
 should complete but cannot (e.g. if it is in the middle of a string).
-Instead of a string, the back-end may return a cons where car is the prefix
-and cdr is used in `company-minimum-prefix-length' test.  It must be either
-number or t, and in the latter case the test automatically succeeds.
+Instead of a string, the backend may return a cons (PREFIX . LENGTH)
+where LENGTH is a number used in place of PREFIX's length when
+comparing against `company-minimum-prefix-length'.  LENGTH can also
+be just t, and in the latter case the test automatically succeeds.
 
 `candidates': The second argument is the prefix to be completed.  The
 return value should be a list of candidates that match the prefix.
@@ -355,7 +367,8 @@
 feature must disable cache (return t to `no-cache') and might also want to
 respond to `match'.
 
-Optional commands:
+Optional commands
+=================
 
 `sorted': Return t here to indicate that the candidates are sorted and will
 not need to be sorted again.
@@ -364,16 +377,23 @@
 from the list.
 
 `no-cache': Usually company doesn't ask for candidates again as completion
-progresses, unless the back-end returns t for this command.  The second
+progresses, unless the backend returns t for this command.  The second
 argument is the latest prefix.
 
+`ignore-case': Return t here if the backend returns case-insensitive
+matches.  This value is used to determine the longest common prefix (as
+used in `company-complete-common'), and to filter completions when fetching
+them from cache.
+
 `meta': The second argument is a completion candidate.  Return a (short)
 documentation string for it.
 
 `doc-buffer': The second argument is a completion candidate.  Return a
-buffer with documentation for it.  Preferably use `company-doc-buffer',
-
-`location': The second argument is a completion candidate.  Return the cons
+buffer with documentation for it.  Preferably use `company-doc-buffer'.  If
+not all buffer contents pertain to this candidate, return a cons of buffer
+and window start position.
+
+`location': The second argument is a completion candidate.  Return a cons
 of buffer and buffer location, or of file and line number where the
 completion candidate was defined.
 
@@ -390,56 +410,62 @@
 backends that provide non-prefix completion.
 
 `require-match': If this returns t, the user is not allowed to enter
-anything not offered as a candidate.  Use with care!  The default value nil
-gives the user that choice with `company-require-match'.  Return value
-`never' overrides that option the other way around.
-
-`init': Called once for each buffer. The back-end can check for external
+anything not offered as a candidate.  Please don't use that value in normal
+backends.  The default value nil gives the user that choice with
+`company-require-match'.  Return value `never' overrides that option the
+other way around.
+
+`init': Called once for each buffer. The backend can check for external
 programs and files and load any required libraries.  Raising an error here
-will show up in message log once, and the back-end will not be used for
+will show up in message log once, and the backend will not be used for
 completion.
 
 `post-completion': Called after a completion candidate has been inserted
 into the buffer.  The second argument is the candidate.  Can be used to
 modify it, e.g. to expand a snippet.
 
-The back-end should return nil for all commands it does not support or
+The backend should return nil for all commands it does not support or
 does not know about.  It should also be callable interactively and use
 `company-begin-backend' to start itself in that case.
 
-Grouped back-ends:
-
-An element of `company-backends' can also itself be a list of back-ends,
-then it's considered to be a \"grouped\" back-end.
-
-When possible, commands taking a candidate as an argument are dispatched to
-the back-end it came from.  In other cases, the first non-nil value among
-all the back-ends is returned.
-
-The latter is the case for the `prefix' command.  But if the group contains
-the keyword `:with', the back-ends after it are ignored for this command.
-
-The completions from back-ends in a group are merged (but only from those
-that return the same `prefix').
-
-Asynchronous back-ends:
+Grouped backends
+================
+
+An element of `company-backends' can also be a list of backends.  The
+completions from backends in such groups are merged, but only from those
+backends which return the same `prefix'.
+
+If a backend command takes a candidate as an argument (e.g. `meta'), the
+call is dispatched to the backend the candidate came from.  In other
+cases (except for `duplicates' and `sorted'), the first non-nil value among
+all the backends is returned.
+
+The group can also contain keywords.  Currently, `:with' and `:separate'
+keywords are defined.  If the group contains keyword `:with', the backends
+listed after this keyword are ignored for the purpose of the `prefix'
+command.  If the group contains keyword `:separate', the candidates that
+come from different backends are sorted separately in the combined list.
+
+Asynchronous backends
+=====================
 
 The return value of each command can also be a cons (:async . FETCHER)
 where FETCHER is a function of one argument, CALLBACK.  When the data
 arrives, FETCHER must call CALLBACK and pass it the appropriate return
-value, as described above.
+value, as described above.  That call must happen in the same buffer as
+where completion was initiated.
 
 True asynchronous operation is only supported for command `candidates', and
 only during idle completion.  Other commands will block the user interface,
-even if the back-end uses the asynchronous calling convention."
+even if the backend uses the asynchronous calling convention."
   :type `(repeat
           (choice
-           :tag "Back-end"
+           :tag "backend"
            ,@(mapcar (lambda (b) `(const :tag ,(cdr b) ,(car b)))
                      company-safe-backends)
            (symbol :tag "User defined")
-           (repeat :tag "Merged Back-ends"
-                   (choice :tag "Back-end"
+           (repeat :tag "Merged backends"
+                   (choice :tag "backend"
                            ,@(mapcar (lambda (b)
                                        `(const :tag ,(cdr b) ,(car b)))
                                      company-safe-backends)
@@ -457,8 +483,10 @@
   :type '(choice
           (const :tag "None" nil)
           (const :tag "Sort by occurrence" (company-sort-by-occurrence))
-          (const :tag "Sort by back-end importance"
+          (const :tag "Sort by backend importance"
                  (company-sort-by-backend-importance))
+          (const :tag "Prefer case sensitive prefix"
+                 (company-sort-prefer-same-case-prefix))
           (repeat :tag "User defined" (function))))
 
 (defcustom company-completion-started-hook nil
@@ -478,7 +506,7 @@
 The hook is called with the selected candidate as an argument.
 
 If you indend to use it to post-process candidates from a specific
-back-end, consider using the `post-completion' command instead."
+backend, consider using the `post-completion' command instead."
   :type 'hook)
 
 (defcustom company-minimum-prefix-length 3
@@ -496,7 +524,7 @@
   "If enabled, disallow non-matching input.
 This can be a function do determine if a match is required.
 
-This can be overridden by the back-end, if it returns t or `never' to
+This can be overridden by the backend, if it returns t or `never' to
 `require-match'.  `company-auto-complete' also takes precedence over this."
   :type '(choice (const :tag "Off" nil)
                  (function :tag "Predicate function")
@@ -551,6 +579,13 @@
                  (const :tag "immediate (0)" 0)
                  (number :tag "seconds")))
 
+(defcustom company-tooltip-idle-delay .5
+  "The idle delay in seconds until tooltip is shown when using
+`company-pseudo-tooltip-unless-just-one-frontend-with-delay'."
+  :type '(choice (const :tag "never (nil)" nil)
+                 (const :tag "immediate (0)" 0)
+                 (number :tag "seconds")))
+
 (defcustom company-begin-commands '(self-insert-command
                                     org-self-insert-command
                                     orgtbl-self-insert-command
@@ -651,7 +686,7 @@
       (error
        (put backend 'company-init 'failed)
        (unless (memq backend company--disabled-backends)
-         (message "Company back-end '%s' could not be initialized:\n%s"
+         (message "Company backend '%s' could not be initialized:\n%s"
                   backend (error-message-string err)))
        (cl-pushnew backend company--disabled-backends)
        nil)))
@@ -662,13 +697,19 @@
       (unless (keywordp b)
         (company-init-backend b))))))
 
+(defun company--maybe-init-backend (backend)
+  (or (not (symbolp backend))
+      (eq t (get backend 'company-init))
+      (unless (get backend 'company-init)
+        (company-init-backend backend))))
+
 (defcustom company-lighter-base "company"
   "Base string to use for the `company-mode' lighter."
   :type 'string
   :package-version '(company . "0.8.10"))
 
 (defvar company-lighter '(" "
-                          (company-backend
+                          (company-candidates
                            (:eval
                             (if (consp company-backend)
                                 (company--group-lighter (nth company-selection
@@ -699,9 +740,12 @@
 inactive, as well.
 
 The completion data is retrieved using `company-backends' and displayed
-using `company-frontends'.  If you want to start a specific back-end, call
+using `company-frontends'.  If you want to start a specific backend, call
 it interactively or use `company-begin-backend'.
 
+By default, the completions list is sorted alphabetically, unless the
+backend chooses otherwise, or `company-transformers' changes it later.
+
 regular keymap (`company-mode-map'):
 
 \\{company-mode-map}
@@ -711,9 +755,6 @@
   nil company-lighter company-mode-map
   (if company-mode
       (progn
-        (when (eq company-idle-delay t)
-          (setq company-idle-delay 0)
-          (warn "Setting `company-idle-delay' to t is deprecated.  Set it to 0 instead."))
         (add-hook 'pre-command-hook 'company-pre-command nil t)
         (add-hook 'post-command-hook 'company-post-command nil t)
         (mapc 'company-init-backend company-backends))
@@ -797,7 +838,9 @@
   (let ((col (car (posn-col-row posn)))
         ;; `posn-col-row' doesn't work well with lines of different height.
         ;; `posn-actual-col-row' doesn't handle multiple-width characters.
-        (row (cdr (posn-actual-col-row posn))))
+        (row (cdr (or (posn-actual-col-row posn)
+                      ;; When position is non-visible for some reason.
+                      (posn-col-row posn)))))
     (when (and header-line-format (version< emacs-version "24.3.93.3"))
       ;; http://debbugs.gnu.org/18384
       (cl-decf row))
@@ -818,9 +861,16 @@
     (or (match-string-no-properties (or expression 0)) "")))
 
 (defun company-grab-line (regexp &optional expression)
-  (company-grab regexp expression (point-at-bol)))
+  "Return a match string for REGEXP if it matches text before point.
+If EXPRESSION is non-nil, return the match string for the respective
+parenthesized expression in REGEXP.
+Matching is limited to the current line."
+  (let ((inhibit-field-text-motion t))
+    (company-grab regexp expression (point-at-bol))))
 
 (defun company-grab-symbol ()
+  "If point is at the end of a symbol, return it.
+Otherwise, if point is not inside a symbol, return an empty string."
   (if (looking-at "\\_>")
       (buffer-substring (point) (save-excursion (skip-syntax-backward "w_")
                                                 (point)))
@@ -828,6 +878,8 @@
       "")))
 
 (defun company-grab-word ()
+  "If point is at the end of a word, return it.
+Otherwise, if point is not inside a symbol, return an empty string."
   (if (looking-at "\\>")
       (buffer-substring (point) (save-excursion (skip-syntax-backward "w")
                                                 (point)))
@@ -835,6 +887,9 @@
       "")))
 
 (defun company-grab-symbol-cons (idle-begin-after-re &optional max-len)
+  "Return a string SYMBOL or a cons (SYMBOL . t).
+SYMBOL is as returned by `company-grab-symbol'.  If the text before point
+matches IDLE-BEGIN-AFTER-RE, return it wrapped in a cons."
   (let ((symbol (company-grab-symbol)))
     (when symbol
       (save-excursion
@@ -846,6 +901,7 @@
           symbol)))))
 
 (defun company-in-string-or-comment ()
+  "Return non-nil if point is within a string or comment."
   (let ((ppss (syntax-ppss)))
     (or (car (setq ppss (nthcdr 3 ppss)))
         (car (setq ppss (cdr ppss)))
@@ -864,7 +920,7 @@
                  (lambda (result) (setq res result)))
         (while (eq res 'trash)
           (if (> (- (time-to-seconds) start) company-async-timeout)
-              (error "Company: Back-end %s async timeout with args %s"
+              (error "Company: backend %s async timeout with args %s"
                      backend args)
             (sleep-for company-async-wait)))
         res))))
@@ -874,23 +930,29 @@
       (if (functionp company-backend)
           (apply company-backend args)
         (apply #'company--multi-backend-adapter company-backend args))
-    (error (error "Company: Back-end %s error \"%s\" with args %s"
+    (user-error (user-error
+                 "Company: backend %s user-error: %s"
+                 company-backend (error-message-string err)))
+    (error (error "Company: backend %s error \"%s\" with args %s"
                   company-backend (error-message-string err) args))))
 
 (defun company--multi-backend-adapter (backends command &rest args)
   (let ((backends (cl-loop for b in backends
-                           when (not (and (symbolp b)
-                                          (eq 'failed (get b 'company-init))))
-                           collect b)))
-    (setq backends
-          (if (eq command 'prefix)
-              (butlast backends (length (member :with backends)))
-            (delq :with backends)))
+                           when (or (keywordp b)
+                                    (company--maybe-init-backend b))
+                           collect b))
+        (separate (memq :separate backends)))
+
+    (when (eq command 'prefix)
+      (setq backends (butlast backends (length (member :with backends)))))
+
+    (setq backends (cl-delete-if #'keywordp backends))
+
     (pcase command
       (`candidates
-       (company--multi-backend-adapter-candidates backends (car args)))
-      (`sorted nil)
-      (`duplicates t)
+       (company--multi-backend-adapter-candidates backends (car args) separate))
+      (`sorted separate)
+      (`duplicates (not separate))
       ((or `prefix `ignore-case `no-cache `require-match)
        (let (value)
          (cl-dolist (backend backends)
@@ -904,26 +966,35 @@
                               (car backends))))
              (apply backend command args))))))))
 
-(defun company--multi-backend-adapter-candidates (backends prefix)
-  (let ((pairs (cl-loop for backend in (cdr backends)
+(defun company--multi-backend-adapter-candidates (backends prefix separate)
+  (let ((pairs (cl-loop for backend in backends
                         when (equal (company--prefix-str
                                      (funcall backend 'prefix))
                                     prefix)
                         collect (cons (funcall backend 'candidates prefix)
-                                      (let ((b backend))
-                                        (lambda (candidates)
-                                          (mapcar
-                                           (lambda (str)
-                                             (propertize str 'company-backend b))
-                                           candidates)))))))
-    (when (equal (company--prefix-str (funcall (car backends) 'prefix)) prefix)
-      ;; Small perf optimization: don't tag the candidates received
-      ;; from the first backend in the group.
-      (push (cons (funcall (car backends) 'candidates prefix)
-                  'identity)
-            pairs))
+                                      (company--multi-candidates-mapper
+                                       backend
+                                       separate
+                                       ;; Small perf optimization: don't tag the
+                                       ;; candidates received from the first
+                                       ;; backend in the group.
+                                       (not (eq backend (car backends))))))))
     (company--merge-async pairs (lambda (values) (apply #'append values)))))
 
+(defun company--multi-candidates-mapper (backend separate tag)
+  (lambda (candidates)
+    (when separate
+      (let ((company-backend backend))
+        (setq candidates
+              (company--preprocess-candidates candidates))))
+    (when tag
+      (setq candidates
+            (mapcar
+             (lambda (str)
+               (propertize str 'company-backend backend))
+             candidates)))
+    candidates))
+
 (defun company--merge-async (pairs merger)
   (let ((async (cl-loop for pair in pairs
                         thereis
@@ -990,22 +1061,24 @@
 (defvar-local company-point nil)
 
 (defvar company-timer nil)
+(defvar company-tooltip-timer nil)
 
 (defsubst company-strip-prefix (str)
   (substring str (length company-prefix)))
 
 (defun company--insert-candidate (candidate)
-  (setq candidate (substring-no-properties candidate))
-  ;; XXX: Return value we check here is subject to change.
-  (if (eq (company-call-backend 'ignore-case) 'keep-prefix)
-      (insert (company-strip-prefix candidate))
-    (unless (equal company-prefix candidate)
-      (delete-region (- (point) (length company-prefix)) (point))
-      (insert candidate))))
+  (when (> (length candidate) 0)
+    (setq candidate (substring-no-properties candidate))
+    ;; XXX: Return value we check here is subject to change.
+    (if (eq (company-call-backend 'ignore-case) 'keep-prefix)
+        (insert (company-strip-prefix candidate))
+      (unless (equal company-prefix candidate)
+        (delete-region (- (point) (length company-prefix)) (point))
+        (insert candidate)))))
 
 (defmacro company-with-candidate-inserted (candidate &rest body)
   "Evaluate BODY with CANDIDATE temporarily inserted.
-This is a tool for back-ends that need candidates inserted before they
+This is a tool for backends that need candidates inserted before they
 can retrieve meta-data for them."
   (declare (indent 1))
   `(let ((inhibit-modification-hooks t)
@@ -1053,7 +1126,7 @@
   (dolist (frontend company-frontends)
     (condition-case-unless-debug err
         (funcall frontend command)
-      (error (error "Company: Front-end %s error \"%s\" on command %s"
+      (error (error "Company: frontend %s error \"%s\" on command %s"
                     frontend (error-message-string err) command)))))
 
 (defun company-set-selection (selection &optional force-update)
@@ -1068,7 +1141,8 @@
 
 (defun company--group-lighter (candidate base)
   (let ((backend (or (get-text-property 0 'company-backend candidate)
-                     (car company-backend))))
+                     (cl-some (lambda (x) (and (not (keywordp x)) x))
+                              company-backend))))
     (when (and backend (symbolp backend))
       (let ((name (replace-regexp-in-string "company-\\|-company" ""
                                             (symbol-name backend))))
@@ -1138,10 +1212,11 @@
         t))))
 
 (defun company--fetch-candidates (prefix)
-  (let ((c (if company--manual-action
-               (company-call-backend 'candidates prefix)
-             (company-call-backend-raw 'candidates prefix)))
-        res)
+  (let* ((non-essential (not (company-explicit-action-p)))
+         (c (if company--manual-action
+                (company-call-backend 'candidates prefix)
+              (company-call-backend-raw 'candidates prefix)))
+         res)
     (if (not (eq (car c) :async))
         c
       (let ((buf (current-buffer))
@@ -1160,7 +1235,11 @@
                    company-candidates-cache
                    (list (cons prefix
                                (company--preprocess-candidates candidates))))
-             (company-idle-begin buf win tick pt)))))
+             (unwind-protect
+                 (company-idle-begin buf win tick pt)
+               (unless company-candidates
+                 (setq company-backend nil
+                       company-candidates-cache nil)))))))
       ;; FIXME: Relying on the fact that the callers
       ;; will interpret nil as "do nothing" is shaky.
       ;; A throw-catch would be one possible improvement.
@@ -1168,6 +1247,7 @@
           (progn (setq res 'done) nil)))))
 
 (defun company--preprocess-candidates (candidates)
+  (cl-assert (cl-every #'stringp candidates))
   (unless (company-call-backend 'sorted)
     (setq candidates (sort candidates 'string<)))
   (when (company-call-backend 'duplicates)
@@ -1281,8 +1361,8 @@
 (defun company-sort-by-backend-importance (candidates)
   "Sort CANDIDATES as two priority groups.
 If `company-backend' is a function, do nothing.  If it's a list, move
-candidates from back-ends before keyword `:with' to the front.  Candidates
-from the rest of the back-ends in the group, if any, will be left at the end."
+candidates from backends before keyword `:with' to the front.  Candidates
+from the rest of the backends in the group, if any, will be left at the end."
   (if (functionp company-backend)
       candidates
     (let ((low-priority (cdr (memq :with company-backend))))
@@ -1296,6 +1376,16 @@
                  (let ((b1 (get-text-property 0 'company-backend c1)))
                    (or (not b1) (not (memq b1 low-priority)))))))))))
 
+(defun company-sort-prefer-same-case-prefix (candidates)
+  "Prefer CANDIDATES with the exact same prefix.
+If a backend returns case insensitive matches, candidates with the an exact
+prefix match (same case) will be prioritized."
+  (cl-loop for candidate in candidates
+           if (string-prefix-p company-prefix candidate)
+           collect candidate into same-case
+           else collect candidate into other-case
+           finally return (append same-case other-case)))
+
 (defun company-idle-begin (buf win tick pos)
   (and (eq buf (current-buffer))
        (eq win (selected-window))
@@ -1320,6 +1410,7 @@
                   (company-cancel))
            (quit (company-cancel))))))
 
+;;;###autoload
 (defun company-manual-begin ()
   (interactive)
   (company-assert-enabled)
@@ -1346,7 +1437,7 @@
       (when (ignore-errors (company-begin-backend backend))
         (cl-return t))))
   (unless company-candidates
-    (error "No other back-end")))
+    (error "No other backend")))
 
 (defun company-require-match-p ()
   (let ((backend-value (company-call-backend 'require-match)))
@@ -1357,7 +1448,7 @@
                (eq company-require-match t))))))
 
 (defun company-auto-complete-p (input)
-  "Return non-nil, if input starts with punctuation or parentheses."
+  "Return non-nil if INPUT should trigger auto-completion."
   (and (if (functionp company-auto-complete)
            (funcall company-auto-complete)
          company-auto-complete)
@@ -1366,7 +1457,8 @@
          (if (consp company-auto-complete-chars)
              (memq (char-syntax (string-to-char input))
                    company-auto-complete-chars)
-           (string-match (substring input 0 1) company-auto-complete-chars)))))
+           (string-match (regexp-quote (substring input 0 1))
+                          company-auto-complete-chars)))))
 
 (defun company--incremental-p ()
   (and (> (point) company-point)
@@ -1450,10 +1542,7 @@
       (setq prefix
             (if (or (symbolp backend)
                     (functionp backend))
-                (when (or (not (symbolp backend))
-                          (eq t (get backend 'company-init))
-                          (unless (get backend 'company-init)
-                            (company-init-backend backend)))
+                (when (company--maybe-init-backend backend)
                   (funcall backend 'prefix))
               (company--multi-backend-adapter backend 'prefix)))
       (when prefix
@@ -1461,10 +1550,14 @@
           (setq company-prefix (company--prefix-str prefix)
                 company-backend backend
                 c (company-calculate-candidates company-prefix))
-          ;; t means complete/unique.  We don't start, so no hooks.
           (if (not (consp c))
-              (when company--manual-action
-                (message "No completion found"))
+              (progn
+                (when company--manual-action
+                  (message "No completion found"))
+                (when (eq c t)
+                  ;; t means complete/unique.
+                  ;; Run the hooks anyway, to e.g. clear the cache.
+                  (company-cancel 'unique)))
             (when company--manual-action
               (setq company--manual-prefix prefix))
             (company-update-candidates c)
@@ -1485,14 +1578,8 @@
     (company-call-frontends 'update)))
 
 (defun company-cancel (&optional result)
-  (unwind-protect
-      (when company-prefix
-        (if (stringp result)
-            (progn
-              (company-call-backend 'pre-completion result)
-              (run-hook-with-args 'company-completion-finished-hook result)
-              (company-call-backend 'post-completion result))
-          (run-hook-with-args 'company-completion-cancelled-hook result)))
+  (let ((prefix company-prefix)
+        (backend company-backend))
     (setq company-backend nil
           company-prefix nil
           company-candidates nil
@@ -1508,9 +1595,19 @@
           company-point nil)
     (when company-timer
       (cancel-timer company-timer))
+    (company-echo-cancel t)
     (company-search-mode 0)
     (company-call-frontends 'hide)
-    (company-enable-overriding-keymap nil))
+    (company-enable-overriding-keymap nil)
+    (when prefix
+      ;; FIXME: RESULT can also be e.g. `unique'.  We should call
+      ;; `company-completion-finished-hook' in that case, with right argument.
+      (if (stringp result)
+          (let ((company-backend backend))
+            (company-call-backend 'pre-completion result)
+            (run-hook-with-args 'company-completion-finished-hook result)
+            (company-call-backend 'post-completion result))
+        (run-hook-with-args 'company-completion-cancelled-hook result))))
   ;; Make return value explicit.
   nil)
 
@@ -1526,6 +1623,7 @@
   (and (symbolp command) (get command 'company-keep)))
 
 (defun company-pre-command ()
+  (company--electric-restore-window-configuration)
   (unless (company-keep this-command)
     (condition-case-unless-debug err
         (when company-candidates
@@ -1538,10 +1636,12 @@
   (when company-timer
     (cancel-timer company-timer)
     (setq company-timer nil))
+  (company-echo-cancel t)
   (company-uninstall-map))
 
 (defun company-post-command ()
-  (when (null this-command)
+  (when (and company-candidates
+             (null this-command))
     ;; Happens when the user presses `C-g' while inside
     ;; `flyspell-post-command-hook', for example.
     ;; Or any other `post-command-hook' function that can call `sit-for',
@@ -1556,10 +1656,13 @@
               (company--perform)))
           (if company-candidates
               (company-call-frontends 'post-command)
-            (and (numberp company-idle-delay)
+            (and (or (numberp company-idle-delay)
+                     ;; Deprecated.
+                     (eq company-idle-delay t))
+                 (not defining-kbd-macro)
                  (company--should-begin)
                  (setq company-timer
-                       (run-with-timer company-idle-delay nil
+                       (run-with-timer (company--idle-delay) nil
                                        'company-idle-begin
                                        (current-buffer) (selected-window)
                                        (buffer-chars-modified-tick) (point))))))
@@ -1568,6 +1671,11 @@
              (company-cancel))))
   (company-install-map))
 
+(defun company--idle-delay ()
+  (if (memql company-idle-delay '(t 0 0.0))
+      0.01
+    company-idle-delay))
+
 (defvar company--begin-inhibit-commands '(company-abort
                                           company-complete-mouse
                                           company-complete
@@ -1586,6 +1694,19 @@
 
 ;;; search ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
+(defcustom company-search-regexp-function #'regexp-quote
+  "Function to construct the search regexp from input.
+It's called with one argument, the current search input.  It must return
+either a regexp without groups, or one where groups don't intersect and
+each one wraps a part of the input string."
+  :type '(choice
+          (const :tag "Exact match" regexp-quote)
+          (const :tag "Words separated with spaces" company-search-words-regexp)
+          (const :tag "Words separated with spaces, in any order"
+                 company-search-words-in-any-order-regexp)
+          (const :tag "All characters in given order, with anything in between"
+                 company-search-flex-regexp)))
+
 (defvar-local company-search-string "")
 
 (defvar company-search-lighter '(" "
@@ -1601,11 +1722,42 @@
 
 (defvar-local company--search-old-changed nil)
 
+(defun company-search-words-regexp (input)
+  (mapconcat (lambda (word) (format "\\(%s\\)" (regexp-quote word)))
+             (split-string input " +" t) ".*"))
+
+(defun company-search-words-in-any-order-regexp (input)
+  (let* ((words (mapcar (lambda (word) (format "\\(%s\\)" (regexp-quote word)))
+                        (split-string input " +" t)))
+         (permutations (company--permutations words)))
+    (mapconcat (lambda (words)
+                 (mapconcat #'identity words ".*"))
+               permutations
+               "\\|")))
+
+(defun company-search-flex-regexp (input)
+  (if (zerop (length input))
+      ""
+    (concat (regexp-quote (string (aref input 0)))
+            (mapconcat (lambda (c)
+                         (concat "[^" (string c) "]*"
+                                 (regexp-quote (string c))))
+                       (substring input 1) ""))))
+
+(defun company--permutations (lst)
+  (if (not lst)
+      '(nil)
+    (cl-mapcan
+     (lambda (e)
+       (mapcar (lambda (perm) (cons e perm))
+               (company--permutations (cl-remove e lst :count 1))))
+     lst)))
+
 (defun company--search (text lines)
-  (let ((quoted (regexp-quote text))
+  (let ((re (funcall company-search-regexp-function text))
         (i 0))
     (cl-dolist (line lines)
-      (when (string-match quoted line (length company-prefix))
+      (when (string-match-p re line (length company-prefix))
         (cl-return i))
       (cl-incf i))))
 
@@ -1623,11 +1775,12 @@
       (company--search-update-predicate ss))
     (company--search-update-string ss)))
 
-(defun company--search-update-predicate (&optional ss)
-  (let* ((company-candidates-predicate
-          (and (not (string= ss ""))
+(defun company--search-update-predicate (ss)
+  (let* ((re (funcall company-search-regexp-function ss))
+         (company-candidates-predicate
+          (and (not (string= re ""))
                company-search-filtering
-               (lambda (candidate) (string-match ss candidate))))
+               (lambda (candidate) (string-match re candidate))))
          (cc (company-calculate-candidates company-prefix)))
     (unless cc (error "No match"))
     (company-update-candidates cc)))
@@ -1782,6 +1935,9 @@
 
 Regular characters are appended to the search string.
 
+Customize `company-search-regexp-function' to change how the input
+is interpreted when searching.
+
 The command `company-search-toggle-filtering' (\\[company-search-toggle-filtering])
 uses the search string to filter the completion candidates."
   (interactive)
@@ -1805,33 +1961,40 @@
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
-(defun company-select-next ()
-  "Select the next candidate in the list."
-  (interactive)
+(defun company-select-next (&optional arg)
+  "Select the next candidate in the list.
+
+With ARG, move by that many elements."
+  (interactive "p")
   (when (company-manual-begin)
-    (company-set-selection (1+ company-selection))))
-
-(defun company-select-previous ()
-  "Select the previous candidate in the list."
-  (interactive)
-  (when (company-manual-begin)
-    (company-set-selection (1- company-selection))))
-
-(defun company-select-next-or-abort ()
+    (company-set-selection (+ (or arg 1) company-selection))))
+
+(defun company-select-previous (&optional arg)
+  "Select the previous candidate in the list.
+
+With ARG, move by that many elements."
+  (interactive "p")
+  (company-select-next (if arg (- arg) -1)))
+
+(defun company-select-next-or-abort (&optional arg)
   "Select the next candidate if more than one, else abort
-and invoke the normal binding."
-  (interactive)
+and invoke the normal binding.
+
+With ARG, move by that many elements."
+  (interactive "p")
   (if (> company-candidates-length 1)
-      (company-select-next)
+      (company-select-next arg)
     (company-abort)
     (company--unread-last-input)))
 
-(defun company-select-previous-or-abort ()
+(defun company-select-previous-or-abort (&optional arg)
   "Select the previous candidate if more than one, else abort
-and invoke the normal binding."
-  (interactive)
+and invoke the normal binding.
+
+With ARG, move by that many elements."
+  (interactive "p")
   (if (> company-candidates-length 1)
-      (company-select-previous)
+      (company-select-previous arg)
     (company-abort)
     (company--unread-last-input)))
 
@@ -1839,15 +2002,23 @@
   "Select the candidate one page further."
   (interactive)
   (when (company-manual-begin)
-    (company-set-selection (+ company-selection
-                              company-tooltip-limit))))
+    (if (and company-selection-wrap-around
+             (= company-selection (1- company-candidates-length)))
+        (company-set-selection 0)
+      (let (company-selection-wrap-around)
+        (company-set-selection (+ company-selection
+                                  company-tooltip-limit))))))
 
 (defun company-previous-page ()
   "Select the candidate one page earlier."
   (interactive)
   (when (company-manual-begin)
-    (company-set-selection (- company-selection
-                              company-tooltip-limit))))
+    (if (and company-selection-wrap-around
+             (zerop company-selection))
+        (company-set-selection (1- company-candidates-length))
+      (let (company-selection-wrap-around)
+        (company-set-selection (- company-selection
+                                  company-tooltip-limit))))))
 
 (defvar company-pseudo-tooltip-overlay)
 
@@ -1916,19 +2087,48 @@
     (if (and (not (cdr company-candidates))
              (equal company-common (car company-candidates)))
         (company-complete-selection)
-      (when company-common
-        (company--insert-candidate company-common)))))
-
-(defun company-complete-common-or-cycle ()
-  "Insert the common part of all candidates, or select the next one."
-  (interactive)
+      (company--insert-candidate company-common))))
+
+(defun company-complete-common-or-cycle (&optional arg)
+  "Insert the common part of all candidates, or select the next one.
+
+With ARG, move by that many elements."
+  (interactive "p")
   (when (company-manual-begin)
     (let ((tick (buffer-chars-modified-tick)))
       (call-interactively 'company-complete-common)
       (when (eq tick (buffer-chars-modified-tick))
-        (let ((company-selection-wrap-around t))
+        (let ((company-selection-wrap-around t)
+              (current-prefix-arg arg))
           (call-interactively 'company-select-next))))))
 
+(defun company-indent-or-complete-common ()
+  "Indent the current line or region, or complete the common part."
+  (interactive)
+  (cond
+   ((use-region-p)
+    (indent-region (region-beginning) (region-end)))
+   ((memq indent-line-function
+          '(indent-relative indent-relative-maybe))
+    (company-complete-common))
+   ((let ((old-point (point))
+          (old-tick (buffer-chars-modified-tick))
+          (tab-always-indent t))
+      (call-interactively #'indent-for-tab-command)
+      (when (and (eq old-point (point))
+                 (eq old-tick (buffer-chars-modified-tick)))
+        (company-complete-common))))))
+
+(defun company-select-next-if-tooltip-visible-or-complete-selection ()
+  "Insert selection if appropriate, or select the next candidate.
+Insert selection if only preview is showing or only one candidate,
+otherwise select the next candidate."
+  (interactive)
+  (if (and (company-tooltip-visible-p) (> company-candidates-length 1))
+      (call-interactively 'company-select-next)
+    (call-interactively 'company-complete-selection)))
+
+;;;###autoload
 (defun company-complete ()
   "Insert the common part of all candidates or the current selection.
 The first time this is called, the common part is inserted, the second
@@ -1944,7 +2144,7 @@
 
 (defun company-complete-number (n)
   "Insert the Nth candidate visible in the tooltip.
-To show the number next to the candidates in some back-ends, enable
+To show the number next to the candidates in some backends, enable
 `company-show-numbers'.  When called interactively, uses the last typed
 character, stripping the modifiers.  That character must be a digit."
   (interactive
@@ -2014,25 +2214,30 @@
         (insert string)))
     (current-buffer)))
 
+(defvar company--electric-saved-window-configuration nil)
+
 (defvar company--electric-commands
-  '(scroll-other-window scroll-other-window-down)
+  '(scroll-other-window scroll-other-window-down mwheel-scroll)
   "List of Commands that won't break out of electric commands.")
 
+(defun company--electric-restore-window-configuration ()
+  "Restore window configuration (after electric commands)."
+  (when (and company--electric-saved-window-configuration
+             (not (memq this-command company--electric-commands)))
+    (set-window-configuration company--electric-saved-window-configuration)
+    (setq company--electric-saved-window-configuration nil)))
+
 (defmacro company--electric-do (&rest body)
   (declare (indent 0) (debug t))
   `(when (company-manual-begin)
-     (save-window-excursion
-       (let ((height (window-height))
-             (row (company--row))
-             cmd)
-         ,@body
-         (and (< (window-height) height)
-              (< (- (window-height) row 2) company-tooltip-limit)
-              (recenter (- (window-height) row 2)))
-         (while (memq (setq cmd (key-binding (vector (list (read-event)))))
-                      company--electric-commands)
-           (call-interactively cmd))
-         (company--unread-last-input)))))
+     (cl-assert (null company--electric-saved-window-configuration))
+     (setq company--electric-saved-window-configuration (current-window-configuration))
+     (let ((height (window-height))
+           (row (company--row)))
+       ,@body
+       (and (< (window-height) height)
+            (< (- (window-height) row 2) company-tooltip-limit)
+            (recenter (- (window-height) row 2))))))
 
 (defun company--unread-last-input ()
   (when last-input-event
@@ -2042,32 +2247,39 @@
 (defun company-show-doc-buffer ()
   "Temporarily show the documentation buffer for the selection."
   (interactive)
-  (company--electric-do
-    (let* ((selected (nth company-selection company-candidates))
-           (doc-buffer (or (company-call-backend 'doc-buffer selected)
-                           (error "No documentation available"))))
-      (with-current-buffer doc-buffer
-        (goto-char (point-min)))
-      (display-buffer doc-buffer t))))
+  (let (other-window-scroll-buffer)
+    (company--electric-do
+      (let* ((selected (nth company-selection company-candidates))
+             (doc-buffer (or (company-call-backend 'doc-buffer selected)
+                             (error "No documentation available")))
+             start)
+        (when (consp doc-buffer)
+          (setq start (cdr doc-buffer)
+                doc-buffer (car doc-buffer)))
+        (setq other-window-scroll-buffer (get-buffer doc-buffer))
+        (let ((win (display-buffer doc-buffer t)))
+          (set-window-start win (if start start (point-min))))))))
 (put 'company-show-doc-buffer 'company-keep t)
 
 (defun company-show-location ()
   "Temporarily display a buffer showing the selected candidate in context."
   (interactive)
-  (company--electric-do
-    (let* ((selected (nth company-selection company-candidates))
-           (location (company-call-backend 'location selected))
-           (pos (or (cdr location) (error "No location available")))
-           (buffer (or (and (bufferp (car location)) (car location))
-                       (find-file-noselect (car location) t))))
-      (with-selected-window (display-buffer buffer t)
-        (save-restriction
-          (widen)
-          (if (bufferp (car location))
-              (goto-char pos)
-            (goto-char (point-min))
-            (forward-line (1- pos))))
-        (set-window-start nil (point))))))
+  (let (other-window-scroll-buffer)
+    (company--electric-do
+      (let* ((selected (nth company-selection company-candidates))
+             (location (company-call-backend 'location selected))
+             (pos (or (cdr location) (error "No location available")))
+             (buffer (or (and (bufferp (car location)) (car location))
+                         (find-file-noselect (car location) t))))
+        (setq other-window-scroll-buffer (get-buffer buffer))
+        (with-selected-window (display-buffer buffer t)
+          (save-restriction
+            (widen)
+            (if (bufferp (car location))
+                (goto-char pos)
+              (goto-char (point-min))
+              (forward-line (1- pos))))
+          (set-window-start nil (point)))))))
 (put 'company-show-location 'company-keep t)
 
 ;;; package functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -2081,7 +2293,7 @@
 
 (defun company-begin-backend (backend &optional callback)
   "Start a completion at point using BACKEND."
-  (interactive (let ((val (completing-read "Company back-end: "
+  (interactive (let ((val (completing-read "Company backend: "
                                            obarray
                                            'functionp nil "company-")))
                  (when val
@@ -2105,7 +2317,7 @@
 CALLBACK is a function called with the selected result if the user
 successfully completes the input.
 
-Example: \(company-begin-with '\(\"foo\" \"foobar\" \"foobarbaz\"\)\)"
+Example: \(company-begin-with \\='\(\"foo\" \"foobar\" \"foobarbaz\"\)\)"
   (let ((begin-marker (copy-marker (point) t)))
     (company-begin-backend
      (lambda (command &optional arg &rest ignored)
@@ -2119,18 +2331,62 @@
           require-match)))
      callback)))
 
+(declare-function find-library-name "find-func")
+(declare-function lm-version "lisp-mnt")
+
 (defun company-version (&optional show-version)
   "Get the Company version as string.
 
 If SHOW-VERSION is non-nil, show the version in the echo area."
   (interactive (list t))
   (with-temp-buffer
+    (require 'find-func)
     (insert-file-contents (find-library-name "company"))
     (require 'lisp-mnt)
     (if show-version
         (message "Company version: %s" (lm-version))
       (lm-version))))
 
+(defun company-diag ()
+  "Pop a buffer with information about completions at point."
+  (interactive)
+  (let* ((bb company-backends)
+         backend
+         (prefix (cl-loop for b in bb
+                          thereis (let ((company-backend b))
+                                    (setq backend b)
+                                    (company-call-backend 'prefix))))
+         cc annotations)
+    (when (stringp prefix)
+      (let ((company-backend backend))
+        (setq cc (company-call-backend 'candidates prefix)
+              annotations
+              (mapcar
+               (lambda (c) (cons c (company-call-backend 'annotation c)))
+               cc))))
+    (pop-to-buffer (get-buffer-create "*company-diag*"))
+    (setq buffer-read-only nil)
+    (erase-buffer)
+    (insert (format "Emacs %s (%s) of %s on %s"
+                    emacs-version system-configuration
+                    (format-time-string "%Y-%m-%d" emacs-build-time)
+                    emacs-build-system))
+    (insert "\nCompany " (company-version) "\n\n")
+    (insert "company-backends: " (pp-to-string bb))
+    (insert "\n")
+    (insert "Used backend: " (pp-to-string backend))
+    (insert "\n")
+    (insert "Prefix: " (pp-to-string prefix))
+    (insert "\n")
+    (insert (message  "Completions:"))
+    (unless cc (insert " none"))
+    (save-excursion
+      (dolist (c annotations)
+        (insert "\n  " (prin1-to-string (car c)))
+        (when (cdr c)
+          (insert " " (prin1-to-string (cdr c))))))
+    (special-mode)))
+
 ;;; pseudo-tooltip ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defvar-local company-pseudo-tooltip-overlay nil)
@@ -2188,6 +2444,8 @@
                      (if company-common
                          (string-width company-common)
                        0)))
+         (_ (setq value (company--pre-render value)
+                  annotation (and annotation (company--pre-render annotation t))))
          (ann-ralign company-tooltip-align-annotations)
          (ann-truncate (< width
                           (+ (length value) (length annotation)
@@ -2214,38 +2472,64 @@
     (setq common (+ (min common width) margin))
     (setq width (+ width margin (length right)))
 
-    (add-text-properties 0 width '(face company-tooltip
-                                   mouse-face company-tooltip-mouse)
-                         line)
-    (add-text-properties margin common
-                         '(face company-tooltip-common
-                           mouse-face company-tooltip-mouse)
-                         line)
+    (font-lock-append-text-property 0 width 'mouse-face
+                                    'company-tooltip-mouse
+                                    line)
     (when (< ann-start ann-end)
-      (add-text-properties ann-start ann-end
-                           '(face company-tooltip-annotation
-                             mouse-face company-tooltip-mouse)
-                           line))
+      (font-lock-append-text-property ann-start ann-end 'face
+                                      (if selected
+                                          'company-tooltip-annotation-selection
+                                        'company-tooltip-annotation)
+                                      line))
+    (font-lock-prepend-text-property margin common 'face
+                                     (if selected
+                                         'company-tooltip-common-selection
+                                       'company-tooltip-common)
+                                     line)
+    (when (let ((re (funcall company-search-regexp-function
+                             company-search-string)))
+            (and (not (string= re ""))
+                 (string-match re value (length company-prefix))))
+      (pcase-dolist (`(,mbeg . ,mend) (company--search-chunks))
+        (let ((beg (+ margin mbeg))
+              (end (+ margin mend))
+              (width (- width (length right))))
+          (when (< beg width)
+            (font-lock-prepend-text-property beg (min end width) 'face
+                                             (if selected
+                                                 'company-tooltip-search-selection
+                                               'company-tooltip-search)
+                                             line)))))
     (when selected
-      (if (and (not (string= company-search-string ""))
-               (string-match (regexp-quote company-search-string) value
-                             (length company-prefix)))
-          (let ((beg (+ margin (match-beginning 0)))
-                (end (+ margin (match-end 0)))
-                (width (- width (length right))))
-            (when (< beg width)
-              (add-text-properties beg (min end width)
-                                   '(face company-tooltip-search)
-                                   line)))
-        (add-text-properties 0 width '(face company-tooltip-selection
-                                       mouse-face company-tooltip-selection)
-                             line)
-        (add-text-properties margin common
-                             '(face company-tooltip-common-selection
-                               mouse-face company-tooltip-selection)
-                             line)))
+      (font-lock-append-text-property 0 width 'face
+                                      'company-tooltip-selection
+                                      line))
+    (font-lock-append-text-property 0 width 'face
+                                    'company-tooltip
+                                    line)
     line))
 
+(defun company--search-chunks ()
+  (let ((md (match-data t))
+        res)
+    (if (<= (length md) 2)
+        (push (cons (nth 0 md) (nth 1 md)) res)
+      (while (setq md (nthcdr 2 md))
+        (when (car md)
+          (push (cons (car md) (cadr md)) res))))
+    res))
+
+(defun company--pre-render (str &optional annotation-p)
+  (or (company-call-backend 'pre-render str annotation-p)
+      (progn
+        (when (or (text-property-not-all 0 (length str) 'face nil str)
+                  (text-property-not-all 0 (length str) 'mouse-face nil str))
+          (setq str (copy-sequence str))
+          (remove-text-properties 0 (length str)
+                                  '(face nil font-lock-face nil mouse-face nil)
+                                  str))
+        str)))
+
 (defun company--clean-string (str)
   (replace-regexp-in-string
    "\\([^[:graph:] ]\\)\\|\\(\ufeff\\)\\|[[:multibyte:]]"
@@ -2273,7 +2557,7 @@
     (while (and (not (eobp)) ; http://debbugs.gnu.org/19553
                 (> (setq lines-moved (vertical-motion 1)) 0)
                 (<= (point) end))
-      (let ((bound (min end (1- (point)))))
+      (let ((bound (min end (point))))
         ;; A visual line can contain several physical lines (e.g. with outline's
         ;; folding overlay).  Take only the first one.
         (push (buffer-substring beg
@@ -2321,8 +2605,12 @@
                     (or (cdr margins) 0)))))
     (when (and word-wrap
                (version< emacs-version "24.4.51.5"))
-      ;; http://debbugs.gnu.org/18384
+      ;; http://debbugs.gnu.org/19300
       (cl-decf ww))
+    ;; whitespace-mode with newline-mark
+    (when (and buffer-display-table
+               (aref buffer-display-table ?\n))
+      (cl-decf ww (1- (length (aref buffer-display-table ?\n)))))
     ww))
 
 (defun company--replacement-string (lines old column nl &optional align-top)
@@ -2357,8 +2645,7 @@
                     (company--offset-line (pop lines) offset))
             new))
 
-    (let ((str (concat (when nl " ")
-                       "\n"
+    (let ((str (concat (when nl " \n")
                        (mapconcat 'identity (nreverse new) "\n")
                        "\n")))
       (font-lock-append-text-property 0 (length str) 'face 'default str)
@@ -2510,7 +2797,7 @@
              (end (save-excursion
                     (move-to-window-line (+ row (abs height)))
                     (point)))
-             (ov (make-overlay (if nl beg (1- beg)) end nil t))
+             (ov (make-overlay beg end nil t))
              (args (list (mapcar 'company-plainify
                                  (company-buffer-lines beg end))
                          column nl above)))
@@ -2551,7 +2838,9 @@
 (defun company-pseudo-tooltip-hide-temporarily ()
   (when (overlayp company-pseudo-tooltip-overlay)
     (overlay-put company-pseudo-tooltip-overlay 'invisible nil)
-    (overlay-put company-pseudo-tooltip-overlay 'after-string nil)))
+    (overlay-put company-pseudo-tooltip-overlay 'line-prefix nil)
+    (overlay-put company-pseudo-tooltip-overlay 'after-string nil)
+    (overlay-put company-pseudo-tooltip-overlay 'display nil)))
 
 (defun company-pseudo-tooltip-unhide ()
   (when company-pseudo-tooltip-overlay
@@ -2559,12 +2848,15 @@
            (disp (overlay-get ov 'company-display)))
       ;; Beat outline's folding overlays, at least.
       (overlay-put ov 'priority 1)
-      ;; `display' could be better (http://debbugs.gnu.org/18285), but it
-      ;; doesn't work when the overlay is empty, which is what happens at eob.
-      ;; It also seems to interact badly with `cursor'.
-      ;; We deal with priorities by having the overlay start before the newline.
-      (overlay-put ov 'after-string disp)
-      (overlay-put ov 'invisible t)
+      ;; No (extra) prefix for the first line.
+      (overlay-put ov 'line-prefix "")
+      ;; `display' is better
+      ;; (http://debbugs.gnu.org/18285, http://debbugs.gnu.org/20847),
+      ;; but it doesn't work on 0-length overlays.
+      (if (< (overlay-start ov) (overlay-end ov))
+          (overlay-put ov 'display disp)
+        (overlay-put ov 'after-string disp)
+        (overlay-put ov 'invisible t))
       (overlay-put ov 'window (selected-window)))))
 
 (defun company-pseudo-tooltip-guard ()
@@ -2579,7 +2871,7 @@
         (when (>= overhang 0) overhang))))))
 
 (defun company-pseudo-tooltip-frontend (command)
-  "`company-mode' front-end similar to a tooltip but based on overlays."
+  "`company-mode' frontend similar to a tooltip but based on overlays."
   (cl-case command
     (pre-command (company-pseudo-tooltip-hide-temporarily))
     (post-command
@@ -2608,6 +2900,30 @@
                (company--show-inline-p))
     (company-pseudo-tooltip-frontend command)))
 
+(defun company-pseudo-tooltip-unless-just-one-frontend-with-delay (command)
+  "`compandy-pseudo-tooltip-frontend', but shown after a delay.
+Delay is determined by `company-tooltip-idle-delay'."
+  (defvar company-preview-overlay)
+  (when (and (memq command '(pre-command hide))
+             company-tooltip-timer)
+    (cancel-timer company-tooltip-timer)
+    (setq company-tooltip-timer nil))
+  (cl-case command
+    (post-command
+     (if (or company-tooltip-timer
+             (overlayp company-pseudo-tooltip-overlay))
+         (if (not (overlayp company-preview-overlay))
+             (company-pseudo-tooltip-unless-just-one-frontend command)
+           (let (company-tooltip-timer)
+             (company-call-frontends 'pre-command))
+           (company-call-frontends 'post-command))
+       (setq company-tooltip-timer
+             (run-with-timer company-tooltip-idle-delay nil
+                             'company-pseudo-tooltip-unless-just-one-frontend-with-delay
+                             'post-command))))
+    (t
+     (company-pseudo-tooltip-unless-just-one-frontend command))))
+
 ;;; overlay ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defvar-local company-preview-overlay nil)
@@ -2616,17 +2932,22 @@
   (company-preview-hide)
 
   (let ((completion (nth company-selection company-candidates)))
-    (setq completion (propertize completion 'face 'company-preview))
-    (add-text-properties 0 (length company-common)
-                         '(face company-preview-common) completion)
+    (setq completion (copy-sequence (company--pre-render completion)))
+    (font-lock-append-text-property 0 (length completion)
+                                    'face 'company-preview
+                                    completion)
+    (font-lock-prepend-text-property 0 (length company-common)
+                                     'face 'company-preview-common
+                                     completion)
 
     ;; Add search string
-    (and company-search-string
-         (string-match (regexp-quote company-search-string) completion)
-         (add-text-properties (match-beginning 0)
-                              (match-end 0)
-                              '(face company-preview-search)
-                              completion))
+    (and (string-match (funcall company-search-regexp-function
+                                company-search-string)
+                       completion)
+         (pcase-dolist (`(,mbeg . ,mend) (company--search-chunks))
+           (font-lock-prepend-text-property mbeg mend
+                                            'face 'company-preview-search
+                                            completion)))
 
     (setq completion (company-strip-prefix completion))
 
@@ -2659,7 +2980,7 @@
     (setq company-preview-overlay nil)))
 
 (defun company-preview-frontend (command)
-  "`company-mode' front-end showing the selection as if it had been inserted."
+  "`company-mode' frontend showing the selection as if it had been inserted."
   (pcase command
     (`pre-command (company-preview-hide))
     (`post-command (company-preview-show-at-point (point)))
@@ -2677,6 +2998,11 @@
        (or (eq (company-call-backend 'ignore-case) 'keep-prefix)
            (string-prefix-p company-prefix company-common))))
 
+(defun company-tooltip-visible-p ()
+  "Returns whether the tooltip is visible."
+  (when (overlayp company-pseudo-tooltip-overlay)
+    (not (overlay-get company-pseudo-tooltip-overlay 'invisible))))
+
 ;;; echo ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defvar-local company-echo-last-msg nil)
@@ -2694,13 +3020,19 @@
       (message ""))))
 
 (defun company-echo-show-soon (&optional getter)
+  (company-echo-cancel)
+  (setq company-echo-timer (run-with-timer 0 nil 'company-echo-show getter)))
+
+(defun company-echo-cancel (&optional unset)
   (when company-echo-timer
     (cancel-timer company-echo-timer))
-  (setq company-echo-timer (run-with-timer 0 nil 'company-echo-show getter)))
-
-(defsubst company-echo-show-when-idle (&optional getter)
-  (when (sit-for company-echo-delay)
-    (company-echo-show getter)))
+  (when unset
+    (setq company-echo-timer nil)))
+
+(defun company-echo-show-when-idle (&optional getter)
+  (company-echo-cancel)
+  (setq company-echo-timer
+        (run-with-idle-timer company-echo-delay nil 'company-echo-show getter)))
 
 (defun company-echo-format ()
 
@@ -2763,19 +3095,19 @@
     (company-echo-show)))
 
 (defun company-echo-frontend (command)
-  "`company-mode' front-end showing the candidates in the echo area."
+  "`company-mode' frontend showing the candidates in the echo area."
   (pcase command
     (`post-command (company-echo-show-soon 'company-echo-format))
     (`hide (company-echo-hide))))
 
 (defun company-echo-strip-common-frontend (command)
-  "`company-mode' front-end showing the candidates in the echo area."
+  "`company-mode' frontend showing the candidates in the echo area."
   (pcase command
     (`post-command (company-echo-show-soon 'company-echo-strip-common-format))
     (`hide (company-echo-hide))))
 
 (defun company-echo-metadata-frontend (command)
-  "`company-mode' front-end showing the documentation in the echo area."
+  "`company-mode' frontend showing the documentation in the echo area."
   (pcase command
     (`post-command (company-echo-show-when-idle 'company-fetch-metadata))
     (`hide (company-echo-hide))))
rename from elpa/company-0.8.12/test/all.el
rename to elpa/company-0.9.2/test/all.el
rename from elpa/company-0.8.12/test/async-tests.el
rename to elpa/company-0.9.2/test/async-tests.el
--- a/elpa/company-0.8.12/test/async-tests.el
+++ b/elpa/company-0.9.2/test/async-tests.el
@@ -83,7 +83,9 @@
       (should (null company-candidates))
       (insert "a")
       (sleep-for 0.1)
-      (should (null company-candidates)))))
+      (should (null company-candidates))
+      (should (null company-candidates-cache))
+      (should (null company-backend)))))
 
 (ert-deftest company-idle-begin-async-allows-immediate-callbacks ()
   (with-temp-buffer
copy from elpa/company-0.8.12/test/all.el
copy to elpa/company-0.9.2/test/bbdb-tests.el
--- a/elpa/company-0.8.12/test/all.el
+++ b/elpa/company-0.9.2/test/bbdb-tests.el
@@ -1,6 +1,6 @@
-;;; all-tests.el --- company-mode tests  -*- lexical-binding: t -*-
+;;; bbdb-tests.el --- company-mode tests  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2015  Free Software Foundation, Inc.
+;; Copyright (C) 2016  Free Software Foundation, Inc.
 
 ;; Author: Dmitry Gutov
 
@@ -19,10 +19,28 @@
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
-(defvar company-test-path
-  (file-name-directory (or load-file-name buffer-file-name)))
+(require 'company-tests)
+(require 'company-bbdb)
+
+(provide 'bbdb-com)
+
+(ert-deftest company-bbdb-prefix-looks-in-header-value ()
+  (with-temp-buffer
+    (insert "To: J")
+    (setq-local major-mode 'message-mode)
+    (should (equal (company-bbdb 'prefix)
+                   "J"))))
 
-(require 'ert)
+(ert-deftest company-bbdb-prefix-includes-space ()
+  (with-temp-buffer
+    (insert "To: John Sm")
+    (setq-local major-mode 'message-mode)
+    (should (equal (company-bbdb 'prefix)
+                   "John Sm"))))
 
-(dolist (test-file (directory-files company-test-path t "-tests.el$"))
-  (load test-file nil t))
+(ert-deftest company-bbdb-prefix-begins-after-comma-or-semi ()
+  (with-temp-buffer
+    (insert "To: John Smythe <jsm@y.the>, Jess C")
+    (setq-local major-mode 'message-mode)
+    (should (equal (company-bbdb 'prefix)
+                   "Jess C"))))
rename from elpa/company-0.8.12/test/clang-tests.el
rename to elpa/company-0.9.2/test/clang-tests.el
--- a/elpa/company-0.8.12/test/clang-tests.el
+++ b/elpa/company-0.9.2/test/clang-tests.el
@@ -22,15 +22,6 @@
 (require 'company-tests)
 (require 'company-clang)
 
-(ert-deftest company-clang-objc-templatify ()
-  (with-temp-buffer
-    (let ((text "createBookWithTitle:andAuthor:"))
-      (insert text)
-      (company-clang-objc-templatify text)
-      (should (equal "createBookWithTitle:arg0 andAuthor:arg1" (buffer-string)))
-      (should (looking-at "arg0"))
-      (should (null (overlay-get (company-template-field-at) 'display))))))
-
 (ert-deftest company-clang-simple-annotation ()
   (let ((str (propertize
               "foo" 'meta
@@ -44,3 +35,11 @@
               "shared_ptr<_Tp> make_shared<typename _Tp>(_Args &&__args...)")))
     (should (equal (company-clang 'annotation str)
                    "<typename _Tp>(_Args &&__args...)"))))
+
+(ert-deftest company-clang-func-ptr-annotation ()
+  (let ((str (propertize "foo" 'meta "void (*)(int) foo")))
+    (should (equal (company-clang 'annotation str) "(*)(int)"))))
+
+(ert-deftest company-clang-null-annotation ()
+  (let ((str "char"))
+    (should (null (company-clang 'annotation str)))))
rename from elpa/company-0.8.12/test/core-tests.el
rename to elpa/company-0.9.2/test/core-tests.el
--- a/elpa/company-0.8.12/test/core-tests.el
+++ b/elpa/company-0.9.2/test/core-tests.el
@@ -1,6 +1,6 @@
 ;;; core-tests.el --- company-mode tests  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2015  Free Software Foundation, Inc.
+;; Copyright (C) 2015, 2016  Free Software Foundation, Inc.
 
 ;; Author: Dmitry Gutov
 
@@ -153,6 +153,26 @@
       (should (equal '("abb" "abc" "abd" "acc" "acd")
                      (company-call-backend 'candidates "a"))))))
 
+(ert-deftest company-multi-backend-handles-keyword-separate ()
+  (let ((one (lambda (command &optional _)
+               (cl-case command
+                 (prefix "a")
+                 (candidates '("aa" "ca" "ba")))))
+        (two (lambda (command &optional _)
+               (cl-case command
+                 (prefix "a")
+                 (candidates '("bb" "ab")))))
+        (tri (lambda (command &optional _)
+               (cl-case command
+                 (prefix "a")
+                 (sorted t)
+                 (candidates '("cc" "bc" "ac"))))))
+    (let ((company-backend (list one two tri :separate)))
+      (should (company-call-backend 'sorted))
+      (should-not (company-call-backend 'duplicates))
+      (should (equal '("aa" "ba" "ca" "ab" "bb" "cc" "bc" "ac")
+                     (company-call-backend 'candidates "a"))))))
+
 (ert-deftest company-begin-backend-failure-doesnt-break-company-backends ()
   (with-temp-buffer
     (insert "a")
@@ -399,6 +419,9 @@
       (and (ert-equal-including-properties (car list1) (car list2))
            (ct-equal-including-properties (cdr list1) (cdr list2)))))
 
+(ert-deftest company-strips-duplicates-returns-nil ()
+  (should (null (company--preprocess-candidates nil))))
+
 (ert-deftest company-strips-duplicates-within-groups ()
   (let* ((kvs '(("a" . "b")
                 ("a" . nil)
rename from elpa/company-0.8.12/test/elisp-tests.el
rename to elpa/company-0.9.2/test/elisp-tests.el
copy from elpa/company-0.8.12/test/all.el
copy to elpa/company-0.9.2/test/files-tests.el
--- a/elpa/company-0.8.12/test/all.el
+++ b/elpa/company-0.9.2/test/files-tests.el
@@ -1,6 +1,6 @@
-;;; all-tests.el --- company-mode tests  -*- lexical-binding: t -*-
+;;; filtes-tests.el --- company-mode tests  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2015  Free Software Foundation, Inc.
+;; Copyright (C) 2016  Free Software Foundation, Inc.
 
 ;; Author: Dmitry Gutov
 
@@ -19,10 +19,30 @@
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
-(defvar company-test-path
-  (file-name-directory (or load-file-name buffer-file-name)))
+(require 'company-tests)
+(require 'company-files)
+
+(ert-deftest company-files-candidates-normal ()
+  (let (company-files--completion-cache)
+    (should (member (expand-file-name "test/" company-dir)
+                    (company-files 'candidates
+                                   company-dir)))))
+
+(ert-deftest company-files-candidates-normal-root ()
+  (let (company-files--completion-cache)
+    (should (member "/bin/"
+                    (company-files 'candidates "/")))))
 
-(require 'ert)
+(ert-deftest company-files-candidates-excluding-dir ()
+  (let ((company-files-exclusions '("test/"))
+        company-files--completion-cache)
+    (should-not (member (expand-file-name "test/" company-dir)
+                        (company-files 'candidates
+                                       company-dir)))))
 
-(dolist (test-file (directory-files company-test-path t "-tests.el$"))
-  (load test-file nil t))
+(ert-deftest company-files-candidates-excluding-files ()
+  (let ((company-files-exclusions '(".el"))
+        company-files--completion-cache)
+    (should-not (member (expand-file-name "company.el" company-dir)
+                        (company-files 'candidates
+                                       company-dir)))))
rename from elpa/company-0.8.12/test/frontends-tests.el
rename to elpa/company-0.9.2/test/frontends-tests.el
--- a/elpa/company-0.8.12/test/frontends-tests.el
+++ b/elpa/company-0.9.2/test/frontends-tests.el
@@ -1,6 +1,6 @@
 ;;; frontends-tests.el --- company-mode tests  -*- lexical-binding: t -*-
 
-;; Copyright (C) 2015  Free Software Foundation, Inc.
+;; Copyright (C) 2015, 2016  Free Software Foundation, Inc.
 
 ;; Author: Dmitry Gutov
 
@@ -31,12 +31,12 @@
       (let ((company-frontends '(company-pseudo-tooltip-frontend))
             (company-begin-commands '(self-insert-command))
             (company-backends
-             (list (lambda (c &optional _)
+             (list (lambda (c &rest _)
                      (cl-case c (prefix "") (candidates '("a" "b" "c")))))))
         (let (this-command)
           (company-call 'complete))
         (company-call 'open-line 1)
-        (should (eq 1 (overlay-start company-pseudo-tooltip-overlay)))))))
+        (should (eq 2 (overlay-start company-pseudo-tooltip-overlay)))))))
 
 (ert-deftest company-pseudo-tooltip-show ()
   :tags '(interactive)
@@ -57,7 +57,7 @@
         (should (eq (overlay-get ov 'company-height) company-tooltip-limit))
         (should (eq (overlay-get ov 'company-column) col))
         (should (string= (overlay-get ov 'company-display)
-                         "\n  123 \nc 45  c\nddd\n")))))))
+                         "  123 \nc 45  c\nddd\n")))))))
 
 (ert-deftest company-pseudo-tooltip-edit-updates-width ()
   :tags '(interactive)
@@ -84,7 +84,8 @@
       (set-window-buffer nil (current-buffer))
       (save-excursion (insert "\n"))
       (let ((company-candidates-length 1)
-            (company-candidates '("123")))
+            (company-candidates '("123"))
+            (company-backend #'ignore))
         (company-preview-show-at-point (point))
         (let* ((ov company-preview-overlay)
                (str (overlay-get ov 'after-string)))
@@ -109,7 +110,7 @@
           ;; With margins.
           (should (eq (overlay-get ov 'company-width) 8))
           (should (string= (overlay-get ov 'company-display)
-                           "\n 123(4) \n 45     \n")))))))
+                           " 123(4) \n 45     \n")))))))
 
 (ert-deftest company-pseudo-tooltip-show-with-annotations-right-aligned ()
   :tags '(interactive)
@@ -130,7 +131,7 @@
           ;; With margins.
           (should (eq (overlay-get ov 'company-width) 13))
           (should (string= (overlay-get ov 'company-display)
-                           "\n 123     (4) \n 45          \n 67 (891011) \n")))))))
+                           " 123     (4) \n 45          \n 67 (891011) \n")))))))
 
 (ert-deftest company-create-lines-shows-numbers ()
   (let ((company-show-numbers t)
@@ -149,7 +150,7 @@
          (company-candidates (mapcar #'car data))
          (company-candidates-length 4)
          (company-tooltip-margin 1)
-         (company-backend (lambda (cmd &optional arg)
+         (company-backend (lambda (cmd &optional arg &rest _)
                             (when (eq cmd 'annotation)
                               (cdr (assoc arg data)))))
          company-tooltip-align-annotations)
@@ -189,12 +190,15 @@
       (should (equal (list (format " %s " (make-string (- ww 2) ?1))
                            (format " %s " (make-string (- ww 2) ?1)))
                      res))
-      (should (eq 'company-tooltip-common-selection
-                    (get-text-property (- ww 2) 'face
-                                       (car res))))
-      (should (eq 'company-tooltip-selection
-                  (get-text-property (1- ww) 'face
-                                     (car res))))
+      (should (equal '(company-tooltip-common-selection
+                       company-tooltip-selection
+                       company-tooltip)
+                     (get-text-property (- ww 2) 'face
+                                        (car res))))
+      (should (equal '(company-tooltip-selection
+                       company-tooltip)
+                     (get-text-property (1- ww) 'face
+                                        (car res))))
       )))
 
 (ert-deftest company-create-lines-clears-out-non-printables ()
@@ -224,7 +228,7 @@
          (alist '(("a" . " ︸") ("b" . " ︸︸")))
          (company-candidates (mapcar #'car alist))
          (company-candidates-length 2)
-         (company-backend (lambda (c &optional a)
+         (company-backend (lambda (c &optional a &rest _)
                             (when (eq c 'annotation)
                               (assoc-default a alist)))))
     (should (equal '(" a ︸   "
@@ -238,7 +242,7 @@
                                "MIRAI発売2カ月"))
          (company-candidates-length 2)
          (company-prefix "MIRAI発")
-         (company-backend (lambda (c &optional _arg)
+         (company-backend (lambda (c &rest _)
                             (pcase c
                               (`ignore-case 'keep-prefix)))))
     (should (equal '(" MIRAI発売1カ月 "
@@ -249,21 +253,54 @@
   (let ((company-search-string "foo")
         (company-backend #'ignore)
         (company-prefix ""))
-    (should (equal-including-properties
+    (should (ert-equal-including-properties
              (company-fill-propertize "barfoo" nil 6 t nil nil)
              #("barfoo"
-               0 3 (face company-tooltip mouse-face company-tooltip-mouse)
-               3 6 (face company-tooltip-search mouse-face company-tooltip-mouse))))
-    (should (equal-including-properties
+               0 3 (face (company-tooltip-selection company-tooltip) mouse-face (company-tooltip-mouse))
+               3 6 (face (company-tooltip-search-selection company-tooltip-selection company-tooltip) mouse-face (company-tooltip-mouse)))))
+    (should (ert-equal-including-properties
              (company-fill-propertize "barfoo" nil 5 t "" " ")
              #("barfo "
-               0 3 (face company-tooltip mouse-face company-tooltip-mouse)
-               3 5 (face company-tooltip-search mouse-face company-tooltip-mouse)
-               5 6 (face company-tooltip mouse-face company-tooltip-mouse))))
-    (should (equal-including-properties
+               0 3 (face (company-tooltip-selection company-tooltip) mouse-face (company-tooltip-mouse))
+               3 5 (face (company-tooltip-search-selection company-tooltip-selection company-tooltip) mouse-face (company-tooltip-mouse))
+               5 6 (face (company-tooltip-selection company-tooltip) mouse-face (company-tooltip-mouse)))))
+    (should (ert-equal-including-properties
              (company-fill-propertize "barfoo" nil 3 t " " " ")
              #(" bar "
-               0 5 (face company-tooltip mouse-face company-tooltip-mouse))))))
+               0 5 (face (company-tooltip-selection company-tooltip) mouse-face (company-tooltip-mouse)))))))
+
+(ert-deftest company-fill-propertize-overrides-face-property ()
+  (let ((company-backend #'ignore)
+        (company-prefix "")
+        (str1 (propertize "str1" 'face 'foo))
+        (str2 (propertize "str2" 'face 'foo)))
+    (should (ert-equal-including-properties
+             (company-fill-propertize str1 str2 8 nil nil nil)
+             #("str1str2"
+               0 4 (face (company-tooltip) mouse-face (company-tooltip-mouse))
+               4 8 (face (company-tooltip-annotation company-tooltip)
+                         mouse-face (company-tooltip-mouse)))))))
+
+(ert-deftest company-fill-propertize-delegates-to-pre-render ()
+  (let ((company-backend
+         (lambda (command &rest args)
+           (pcase command
+             (`pre-render
+              (propertize (car args)
+                          'face (if (cadr args)
+                                    'annotation
+                                  'value))))))
+        (company-prefix "")
+        (str1 (propertize "str1" 'foo 'bar))
+        (str2 (propertize "str2" 'foo 'bar)))
+    (let ((res (company-fill-propertize str1 str2 8 nil nil nil)))
+      ;; Could use `ert-equal-including-properties' as well.
+      (should (eq (get-text-property 0 'foo res) 'bar))
+      (should (eq (get-text-property 4 'foo res) 'bar))
+      (should (equal (get-text-property 0 'face res)
+                     '(value company-tooltip)))
+      (should (equal (get-text-property 4 'face res)
+                     '(annotation company-tooltip-annotation company-tooltip))))))
 
 (ert-deftest company-column-with-composition ()
   :tags '(interactive)
@@ -299,7 +336,7 @@
     (insert (propertize "a" 'display "bbb\nccc\ndddd\n"))
     (insert "eee\nfff\nggg")
     (should (equal (company-buffer-lines (point-min) (point-max))
-                   '("" "" "" "eee" "fff" "ggg")))))
+                   '("a" "" "" "eee" "fff" "ggg")))))
 
 (ert-deftest company-buffer-lines-with-multiline-after-string-at-eob ()
   :tags '(interactive)
@@ -310,6 +347,16 @@
     (should (equal (company-buffer-lines (point-min) (point-max))
                    '("a" "b" "c")))))
 
+(ert-deftest company-buffer-lines-with-line-wrapping ()
+  :tags '(interactive)
+  (with-temp-buffer
+    (let ((ww (company--window-width)))
+      (insert (make-string (* 3 ww) ?a))
+      (should (equal (company-buffer-lines (point-min) (point-max))
+                     (list (make-string ww ?a)
+                           (make-string ww ?a)
+                           (make-string ww ?a)))))))
+
 (ert-deftest company-modify-line ()
   (let ((str "-*-foobar"))
     (should (equal-including-properties
rename from elpa/company-0.8.12/test/keywords-tests.el
rename to elpa/company-0.9.2/test/keywords-tests.el
rename from elpa/company-0.8.12/test/template-tests.el
rename to elpa/company-0.9.2/test/template-tests.el
--- a/elpa/company-0.8.12/test/template-tests.el
+++ b/elpa/company-0.9.2/test/template-tests.el
@@ -22,6 +22,13 @@
 (require 'company-tests)
 (require 'company-template)
 
+(defun company-template-field-assert-text (str &optional pos)
+  (let ((field (company-template-field-at pos)))
+    (should (equal (buffer-substring-no-properties
+                    (overlay-start field)
+                    (overlay-end field))
+                   str))))
+
 (ert-deftest company-template-removed-after-the-last-jump ()
   (with-temp-buffer
     (insert "{ }")
@@ -29,8 +36,8 @@
     (let ((tpl (company-template-declare-template (point) (1- (point-max)))))
       (save-excursion
         (dotimes (_ 2)
-          (insert " ")
-          (company-template-add-field tpl (point) "foo")))
+          (insert " foo")
+          (company-template-add-field tpl (- (point) 3) (point))))
       (company-call 'template-forward-field)
       (should (= 3 (point)))
       (company-call 'template-forward-field)
@@ -46,8 +53,8 @@
     (goto-char 2)
     (let ((tpl (company-template-declare-template (point) (1- (point-max)))))
       (save-excursion
-        (insert " ")
-        (company-template-add-field tpl (point) "bar"))
+        (insert " bar")
+        (company-template-add-field tpl (- (point) 3) (point)))
       (company-call 'template-move-to-first tpl)
       (should (= 3 (point)))
       (dolist (c (string-to-list "tee"))
@@ -64,28 +71,49 @@
     (let ((text "foo(int a, short b)"))
       (insert text)
       (company-template-c-like-templatify text)
-      (should (equal "foo(arg0, arg1)" (buffer-string)))
-      (should (looking-at "arg0"))
-      (should (equal "int a"
-                     (overlay-get (company-template-field-at) 'display))))))
+      (should (equal "foo(int a, short b)" (buffer-string)))
+      (company-template-field-assert-text "int a"))))
 
 (ert-deftest company-template-c-like-templatify-trims-after-closing-paren ()
   (with-temp-buffer
     (let ((text "foo(int a, short b)!@ #1334 a"))
       (insert text)
       (company-template-c-like-templatify text)
-      (should (equal "foo(arg0, arg1)" (buffer-string)))
-      (should (looking-at "arg0")))))
+      (should (equal "foo(int a, short b)" (buffer-string)))
+      (company-template-field-assert-text "int a"))))
 
 (ert-deftest company-template-c-like-templatify-generics ()
   (with-temp-buffer
     (let ((text "foo<TKey, TValue>(int i, Dict<TKey, TValue>, long l)"))
       (insert text)
       (company-template-c-like-templatify text)
-      (should (equal "foo<arg0, arg1>(arg2, arg3, arg4)" (buffer-string)))
+      (should (equal (buffer-string) text))
+      (company-template-field-assert-text "TKey")
+      (search-forward "Dict")
+      (forward-char -1)
+      (company-template-field-assert-text "Dict<TKey, TValue>"))))
+
+(ert-deftest company-template-c-like-func-ptr ()
+  (with-temp-buffer
+    (let ((text "foo(*)(int)"))
+      (insert text)
+      (company-template-c-like-templatify text)
+      (should (equal (buffer-string) "foo(int)"))
+      (company-template-field-assert-text "int"))))
+
+(ert-deftest company-clang-objc-templatify-empty-args ()
+  (with-temp-buffer
+    (let ((text "createBookWithTitle:andAuthor:"))
+      (insert text)
+      (company-template-objc-templatify text)
+      (should (equal "createBookWithTitle:arg0 andAuthor:arg1" (buffer-string)))
       (should (looking-at "arg0"))
-      (should (equal "TKey" (overlay-get (company-template-field-at) 'display)))
-      (search-forward "arg3")
-      (forward-char -1)
-      (should (equal "Dict<TKey, TValue>"
-                     (overlay-get (company-template-field-at) 'display))))))
+      (should (null (overlay-get (company-template-field-at) 'display))))))
+
+(ert-deftest company-template-objc-templatify ()
+  (with-temp-buffer
+    (let ((text "createBookWithTitle:(NSString) andAuthor:(id)"))
+      (insert text)
+      (company-template-objc-templatify text)
+      (should (equal (buffer-string) text))
+      (company-template-field-assert-text "(NSString)"))))
rename from elpa/company-0.8.12/test/transformers-tests.el
rename to elpa/company-0.9.2/test/transformers-tests.el
rename from elpa/elpy-1.12.0/NEWS.rst
rename to elpa/elpy-1.14.1/NEWS.rst
--- a/elpa/elpy-1.12.0/NEWS.rst
+++ b/elpa/elpy-1.14.1/NEWS.rst
@@ -1,3 +1,22 @@
+New in Elpy 1.14.0
+==================
+
+- Basic Django support. Try ``C-c C-x c`` and ``C-c C-x r``! Thanks to
+  Daniel Gopar for this.
+- You can now use manage.py to run Django tests, instead of always
+  using django-admin.py.
+- When called with a prefix argument ``elpy-importmagic-add-import``
+  will now ask for an alias name to import as.
+
+
+New in Elpy 1.13.0
+==================
+
+- Fewer surprises with syntax checks, ``C-c C-z``, reformatting
+- Improved behavior for reformatting.
+- Improved documentation for IPython. IPython 5 broke a lot of things with Emacs. Use it at your own risk.
+
+
 New in Elpy 1.12.0
 ==================
 
rename from elpa/elpy-1.12.0/elpy-autoloads.el
rename to elpa/elpy-1.14.1/elpy-autoloads.el
--- a/elpa/elpy-1.12.0/elpy-autoloads.el
+++ b/elpa/elpy-1.14.1/elpy-autoloads.el
@@ -3,7 +3,7 @@
 ;;; Code:
 (add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
 
-;;;### (autoloads nil "elpy" "elpy.el" (22528 61683 884152 80000))
+;;;### (autoloads nil "elpy" "elpy.el" (22708 23356 115000 877000))
 ;;; Generated autoloads from elpy.el
 
 (autoload 'elpy-enable "elpy" "\
@@ -38,8 +38,8 @@
 
 ;;;***
 
-;;;### (autoloads nil nil ("elpy-pkg.el" "elpy-refactor.el") (22528
-;;;;;;  61684 201051 64000))
+;;;### (autoloads nil nil ("elpy-django.el" "elpy-pkg.el" "elpy-refactor.el")
+;;;;;;  (22708 23356 436805 199000))
 
 ;;;***
 
new file mode 100644
--- /dev/null
+++ b/elpa/elpy-1.14.1/elpy-django.el
@@ -0,0 +1,170 @@
+;;; elpy-django.el --- Django extension for elpy
+
+;; Copyright (C) 2013-2016  Jorgen Schaefer
+
+;; Author: Daniel Gopar <gopardaniel@gmail.com>
+;; URL: https://github.com/jorgenschaefer/elpy
+
+;; This program is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License
+;; as published by the Free Software Foundation; either version 3
+;; of the License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file serves as an extension to elpy by adding django support
+
+;;; Code:
+
+(require 's)
+
+;;;;;;;;;;;;;;;;;;;;;;
+;;; User customization
+
+(defcustom elpy-django-command "django-admin.py"
+  "Command to use when running Django specific commands.
+Best to set it to full path to 'manage.py' if it's available."
+  :type 'string
+  :safe 'stringp
+  :group 'elpy)
+(make-variable-buffer-local 'elpy-django-command)
+
+(defcustom elpy-django-server-ipaddr "127.0.0.1"
+  "What address Django will use when running the dev server."
+  :type 'string
+  :safe 'stringp
+  :group 'elpy)
+(make-variable-buffer-local 'elpy-django-server-ipaddr)
+
+(defcustom elpy-django-server-port "8000"
+  "What port Django will use when running the dev server."
+  :type 'string
+  :safe 'stringp
+  :group 'elpy)
+(make-variable-buffer-local 'elpy-django-server-port)
+
+(defcustom elpy-django-server-command "runserver"
+  "When executing `elpy-django-runserver' what should be the server
+command to use."
+  :type 'string
+  :safe 'stringp
+  :group 'elpy)
+(make-variable-buffer-local 'elpy-django-server-command)
+
+(defcustom elpy-django-always-prompt nil
+  "When non-nil, it will always prompt for extra arguments
+to pass with the chosen command."
+  :type 'boolean
+  :safe 'booleanp
+  :group 'elpy)
+(make-variable-buffer-local 'elpy-django-always-prompt)
+
+(defcustom elpy-django-commands-with-req-arg '("startapp" "startproject"
+                                               "loaddata" "sqlmigrate"
+                                               "sqlsequencereset"
+                                               "squashmigrations")
+  "Used to determine if we should prompt for arguments. Some commands
+require arguments in order for it to work."
+  :type 'list
+  :safe 'listp
+  :group 'elpy)
+(make-variable-buffer-local 'elpy-django-commands-with-req-arg)
+
+;;;;;;;;;;;;;;;;;;;;;;
+;; Key map
+
+(defvar elpy-django-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "c") 'elpy-django-command)
+    (define-key map (kbd "r") 'elpy-django-runserver)
+    map)
+  "Key map for django extension")
+
+;;;;;;;;;;;;;;;;;;;;;;
+;;; Helper Functions
+
+(defun elpy-django-setup ()
+  "Decides whether to start the minor mode or not."
+  ;; Make sure we're in an actual file and we can find
+  ;; manage.py. Otherwise user will have to manually
+  ;; start this mode if they're using 'django-admin.py'
+  (when (locate-dominating-file default-directory "manage.py")
+    ;; Let's be nice and point to full path of 'manage.py'
+    ;; This only affects the buffer if there's no directory
+    ;; variable overwriting it.
+    (setq elpy-django-command
+          (concat (locate-dominating-file default-directory "manage.py") "manage.py"))
+    (elpy-django 1)))
+
+(defun elpy-django--get-commands ()
+  "Return list of django commands."
+  (let ((dj-commands-str nil)
+        (help-output
+         (shell-command-to-string (concat elpy-django-command " -h"))))
+    (setq dj-commands-str
+          (with-temp-buffer
+            (progn
+              (insert help-output)
+              (goto-char (point-min))
+              (delete-region (point) (search-forward "Available subcommands:" nil nil nil))
+              ;; cleanup [auth] and stuff
+              (goto-char (point-min))
+              (save-excursion
+                (replace-regexp "\\[.*\\]" ""))
+              (buffer-string))))
+    ;; get a list of commands from the output of manage.py -h
+    ;; What would be the pattern to optimize this ?
+    (setq dj-commands-str (split-string dj-commands-str "\n"))
+    (setq dj-commands-str (-remove (lambda (x) (string= x "")) dj-commands-str))
+    (setq dj-commands-str (mapcar (lambda (x) (s-trim x)) dj-commands-str))
+    (sort dj-commands-str 'string-lessp)))
+
+;;;;;;;;;;;;;;;;;;;;;;
+;;; User Functions
+
+(defun elpy-django-command (cmd)
+  "Prompt user for Django command. If called with `C-u',
+it will prompt for other flags/arguments to run."
+  (interactive (list (completing-read "Command: " (elpy-django--get-commands) nil nil)))
+  ;; Called with C-u, variable is set or is a cmd that requires an argument
+  (when (or current-prefix-arg
+            elpy-django-always-prompt
+            (member cmd elpy-django-commands-with-req-arg))
+    (setq cmd (concat cmd " " (read-shell-command (concat cmd ": ") "--noinput"))))
+  (compile (concat elpy-django-command " " cmd)))
+
+(defun elpy-django-runserver (arg)
+  "Start the server and automatically add the ipaddr and port.
+Also create it's own special buffer so that we can have multiple
+servers running per project.
+
+When called with a prefix (C-u), it will prompt for additional args."
+  (interactive "P")
+  (let* ((cmd (concat elpy-django-command " " elpy-django-server-command))
+         (proj-root (file-name-base (directory-file-name (elpy-project-root))))
+         (buff-name (format "*runserver[%s]*" proj-root)))
+    ;; Kill any previous instance of runserver since we might be doing something new
+    (when (get-buffer buff-name)
+      (kill-buffer buff-name))
+    (setq cmd (concat cmd " " elpy-django-server-ipaddr ":" elpy-django-server-port))
+    (when (or arg elpy-django-always-prompt)
+      (setq cmd (concat cmd " "(read-shell-command (concat cmd ": ")))))
+    (compile cmd)
+    (with-current-buffer "*compilation*"
+      (rename-buffer buff-name))))
+
+(define-minor-mode elpy-django
+  "Minor mode to for Django commands."
+  :group 'elpy)
+
+(provide 'elpy-django)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; elpy-django.el ends here
rename from elpa/elpy-1.12.0/elpy-pkg.el
rename to elpa/elpy-1.14.1/elpy-pkg.el
--- a/elpa/elpy-1.12.0/elpy-pkg.el
+++ b/elpa/elpy-1.14.1/elpy-pkg.el
@@ -1,9 +1,10 @@
-(define-package "elpy" "1.12.0" "Emacs Python Development Environment"
+(define-package "elpy" "1.14.1" "Emacs Python Development Environment"
   '((company "0.8.2")
     (find-file-in-project "3.3")
     (highlight-indentation "0.5.0")
     (pyvenv "1.3")
-    (yasnippet "0.8.0")))
+    (yasnippet "0.8.0")
+    (s "1.10.0")))
 ;; Local Variables:
 ;; no-byte-compile: t
 ;; End:
rename from elpa/elpy-1.12.0/elpy-refactor.el
rename to elpa/elpy-1.14.1/elpy-refactor.el
rename from elpa/elpy-1.12.0/elpy.el
rename to elpa/elpy-1.14.1/elpy.el
--- a/elpa/elpy-1.12.0/elpy.el
+++ b/elpa/elpy-1.14.1/elpy.el
@@ -4,9 +4,9 @@
 
 ;; Author: Jorgen Schaefer <contact@jorgenschaefer.de>
 ;; URL: https://github.com/jorgenschaefer/elpy
-;; Version: 1.12.0
+;; Version: 1.14.1
 ;; Keywords: Python, IDE, Languages, Tools
-;; Package-Requires: ((company "0.8.2") (find-file-in-project "3.3")  (highlight-indentation "0.5.0") (pyvenv "1.3") (yasnippet "0.8.0"))
+;; Package-Requires: ((company "0.8.2") (find-file-in-project "3.3")  (highlight-indentation "0.5.0") (pyvenv "1.3") (yasnippet "0.8.0") (s "1.10.0"))
 
 ;; This program is free software; you can redistribute it and/or
 ;; modify it under the terms of the GNU General Public License
@@ -44,9 +44,10 @@
 (require 'python)
 
 (require 'elpy-refactor)
+(require 'elpy-django)
 (require 'pyvenv)
 
-(defconst elpy-version "1.12.0"
+(defconst elpy-version "1.14.1"
   "The version of the Elpy lisp code.")
 
 ;;;;;;;;;;;;;;;;;;;;;;
@@ -71,7 +72,8 @@
                           elpy-module-flymake
                           elpy-module-highlight-indentation
                           elpy-module-pyvenv
-                          elpy-module-yasnippet)
+                          elpy-module-yasnippet
+                          elpy-module-django)
   "Which Elpy modules to use.
 
 Elpy can use a number of modules for additional features, which
@@ -88,6 +90,8 @@
                      elpy-module-highlight-indentation)
               (const :tag "Expand code snippets (YASnippet)"
                      elpy-module-yasnippet)
+              (const :tag "Django configurations (Elpy-Django)"
+                     elpy-module-django)
               (const :tag "Configure some sane defaults for Emacs"
                      elpy-module-sane-defaults))
   :group 'elpy)
@@ -153,7 +157,7 @@
 you might want to keep it."
   :type 'boolean
   :group 'elpy)
-  
+
 (defcustom elpy-dedicated-shells nil
   "Non-nil if Elpy should use dedicated shells.
 
@@ -315,6 +319,18 @@
   :type '(repeat string)
   :group 'elpy)
 
+(defcustom elpy-test-django-runner-manage-command '("manage.py" "test"
+                                                    "--noinput")
+  "The command to use for `elpy-test-django-runner' in case we want to use manage.py."
+  :type '(repeat string)
+  :group 'elpy)
+
+(defcustom elpy-test-django-with-manage nil
+  "Set to nil, elpy will use `elpy-test-django-runner-command',
+set to t elpy will use `elpy-test-django-runner-manage-command' and set the project root accordingly."
+  :type 'boolean
+  :group 'elpy)
+
 (defcustom elpy-test-nose-runner-command '("nosetests")
   "The command to use for `elpy-test-nose-runner'."
   :type '(repeat string)
@@ -340,8 +356,15 @@
   :type 'boolean
   :group 'elpy)
 
+(defcustom elpy-syntax-check-command "flake8"
+  "The command to use for `elpy-check'."
+  :type 'string
+  :group 'elpy)
+
 ;;;;;;;;;;;;;
 ;;; Elpy Mode
+(defvar elpy--shell-last-py-buffer nil
+  "Help keep track of python buffer when changing to pyshell.")
 
 (defvar elpy-refactor-map
   (let ((map (make-sparse-keymap "Refactor")))
@@ -381,7 +404,10 @@
     (define-key map (kbd "C-c C-t") 'elpy-test)
     (define-key map (kbd "C-c C-v") 'elpy-check)
     (define-key map (kbd "C-c C-z") 'elpy-shell-switch-to-shell)
+    (define-key map (kbd "C-c C-k") 'elpy-shell-kill)
+    (define-key map (kbd "C-c C-K") 'elpy-shell-kill-all)
     (define-key map (kbd "C-c C-r") elpy-refactor-map)
+    (define-key map (kbd "C-c C-x") elpy-django-mode-map)
 
     (define-key map (kbd "<S-return>") 'elpy-open-and-indent-line-below)
     (define-key map (kbd "<C-S-return>") 'elpy-open-and-indent-line-above)
@@ -432,7 +458,11 @@
                "Send Buffer to Python")
       :help "Send the current region or the whole buffer to Python"]
      ["Send Definition" python-shell-send-defun
-      :help "Send current definition to Python"])
+      :help "Send current definition to Python"]
+     ["Kill Python shell" elpy-shell-kill
+      :help "Kill the current Python shell"]
+     ["Kill all Python shells" elpy-shell-kill-all
+      :help "Kill all Python shells"])
     ("Project"
      ["Find File" elpy-find-file
       :help "Interactively find a file in the current project"]
@@ -539,6 +569,7 @@
     ("Snippets (YASnippet)" yasnippet "yas-")
     ("Directory Grep (rgrep)" grep "grep-")
     ("Search as You Type (ido)" ido "ido-")
+    ("Django Extension" elpy-django "elpy-django-")
     ;; ffip does not use defcustom
     ;; highlight-indent does not use defcustom, either. Its sole face
     ;; is defined in basic-faces.
@@ -811,7 +842,8 @@
                     (not (gethash "rope_version" config))
                     (not (gethash "jedi_version" config))))
       (elpy-insert--para
-       "There is no backend available. Please install either Rope or Jedi.\n")
+       "There is no backend available. Please install either Rope or Jedi."
+       "See https://github.com/jorgenschaefer/elpy/wiki/FAQ#q-should-i-use-rope-or-jedi for guidance.\n")
       (insert "\n")
       (widget-create 'elpy-insert--pip-button :package rope-pypi-package)
       (insert "\n")
@@ -898,8 +930,8 @@
                      :package "yapf" :upgrade t)
       (insert "\n\n"))
 
-    ;; flake8, the default syntax checker, not found
-    (when (not (executable-find python-check-command))
+    ;; Syntax checker not available
+    (when (not (executable-find elpy-syntax-check-command))
       (elpy-insert--para
        "The configured syntax checker could not be found. Elpy uses this "
        "program to provide syntax checks of your programs, so you might "
@@ -1049,14 +1081,14 @@
                                                   yapf-latest))
             ("Syntax checker" . ,(let ((syntax-checker
                                         (executable-find
-                                         python-check-command)))
+                                         elpy-syntax-check-command)))
                                    (if  syntax-checker
                                        (format "%s (%s)"
                                                (file-name-nondirectory
                                                 syntax-checker)
                                                syntax-checker)
                                      (format "Not found (%s)"
-                                             python-check-command))))))
+                                             elpy-syntax-check-command))))))
     (setq maxwidth 0)
     (dolist (row table)
       (when (> (length (car row))
@@ -1601,30 +1633,83 @@
 (defun elpy-shell-switch-to-shell ()
   "Switch to inferior Python process buffer."
   (interactive)
+  (setq elpy--shell-last-py-buffer (buffer-name))
   (pop-to-buffer (process-buffer (elpy-shell-get-or-create-process))))
 
 (defun elpy-shell-switch-to-buffer ()
   "Switch from inferior Python process buffer to recent Python buffer."
   (interactive)
-  (pop-to-buffer (other-buffer (current-buffer) 1)))
+  (pop-to-buffer elpy--shell-last-py-buffer))
+
+(defun elpy-shell-kill (&optional kill-buff)
+  "Kill the current python shell.
+
+If `elpy-dedicated-shells' is non-nil,
+kill the current buffer dedicated shell.
+
+If KILL-BUFF is non-nil, also kill the associated buffer."
+  (interactive)
+  (let ((shell-buffer (python-shell-get-buffer)))
+    (cond
+     (shell-buffer
+      (delete-process shell-buffer)
+      (when kill-buff
+	(kill-buffer shell-buffer))
+      (message "Killed %s shell" shell-buffer))
+     (t
+      (message "No python shell to kill")))))
+
+(defun elpy-shell-kill-all (&optional kill-buffers ask-for-each-one)
+  "Kill all active python shells.
+
+If KILL-BUFFERS is non-nil, also kill the associated buffers.
+If ASK-FOR-EACH-ONE is non-nil, ask before killing each python process.
+"
+  (interactive)
+  (let ((python-buffer-list ()))
+    ;; Get active python shell buffers and kill inactive ones (if asked)
+    (loop for buffer being the buffers do
+	  (when (string-match "^\*Python\\\[.*\\]\*$" (buffer-name buffer))
+	    (if (get-buffer-process buffer)
+		(push buffer python-buffer-list)
+	      (when kill-buffers
+		(kill-buffer buffer)))))
+    (cond
+     ;; Ask for each buffers and kill
+     ((and python-buffer-list ask-for-each-one)
+      (loop for buffer in python-buffer-list do
+	    (when (y-or-n-p (format "Kill %s ?" buffer))
+		(delete-process buffer)
+		(when kill-buffers
+		  (kill-buffer buffer)))))
+     ;; Ask and kill every buffers
+     (python-buffer-list
+      (if (y-or-n-p (format "Kill %s python shells ?" (length python-buffer-list)))
+	  (loop for buffer in python-buffer-list do
+		(delete-process buffer)
+		(when kill-buffers
+		  (kill-buffer buffer)))))
+     ;; No shell to close
+     (t
+      (message "No python shell to close")))))
 
 (defun elpy-shell-get-or-create-process ()
   "Get or create an inferior Python process for current buffer and return it."
   (let* ((bufname (format "*%s*" (python-shell-get-process-name nil)))
-	 (dedbufname (format "*%s*" (python-shell-get-process-name t)))
-	 (proc (get-buffer-process bufname))
-	 (dedproc (get-buffer-process dedbufname)))
+         (dedbufname (format "*%s*" (python-shell-get-process-name t)))
+         (proc (get-buffer-process bufname))
+         (dedproc (get-buffer-process dedbufname)))
     (if elpy-dedicated-shells
-	(if dedproc
-	    dedproc
-	  (run-python (python-shell-parse-command) t)
-	  (get-buffer-process dedbufname))
+        (if dedproc
+            dedproc
+          (run-python (python-shell-parse-command) t)
+          (get-buffer-process dedbufname))
       (if dedproc
-	  dedproc
-	(if proc
-	    proc
-	  (run-python (python-shell-parse-command))
-	  (get-buffer-process bufname))))))
+          dedproc
+        (if proc
+            proc
+          (run-python (python-shell-parse-command))
+          (get-buffer-process bufname))))))
 
 (defun elpy-shell--region-without-indentation (beg end)
   "Return the current region as a string, but without indentation."
@@ -1672,10 +1757,13 @@
                                          (buffer-file-name))
                                    (buffer-file-name))))
         (extra-args (if whole-project-p
-                        (concat " --exclude="
-                                (mapconcat #'identity
-                                           elpy-project-ignored-directories
-                                           ","))
+                        (concat
+                         (if (equal python-check-command "pylint")
+                             " --ignore="
+                           " --exclude=")
+                         (mapconcat #'identity
+                                    elpy-project-ignored-directories
+                                    ","))
                       "")))
     (compilation-start (concat python-check-command
                                " "
@@ -2041,17 +2129,28 @@
 (put 'elpy-test-discover-runner 'elpy-test-runner-p t)
 
 (defun elpy-test-django-runner (top file module test)
-  "Test the project using the Django discover runner.
+  "Test the project using the Django discover runner,
+or with manage.py if elpy-test-django-with-manage is true.
 
 This requires Django 1.6 or the django-discover-runner package."
   (interactive (elpy-test-at-point))
   (if module
       (apply #'elpy-test-run
              top
-             (append elpy-test-django-runner-command
-                     (list (if test
-                               (format "%s.%s" module test)
-                             module))))
+             (append
+              ;; if we want to use manage.py, get the root directory where it is.
+              (if elpy-test-django-with-manage
+                  (append (list (concat (expand-file-name
+                                         (locate-dominating-file
+                                          (elpy-project-root)
+                                          (car elpy-test-django-runner-manage-command)))
+                                        (car elpy-test-django-runner-manage-command)))
+                          (cdr elpy-test-django-runner-manage-command))
+                ;; or the default:
+                elpy-test-django-runner-command)
+              (list (if test
+                        (format "%s.%s" module test)
+                      module))))
     (apply #'elpy-test-run
            top
            elpy-test-django-runner-command)))
@@ -2204,7 +2303,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Import manipulation
 
-(defun elpy-importmagic--add-import-read-args (&optional object prompt)
+(defun elpy-importmagic--add-import-read-args (&optional object prompt ask-for-alias)
   (let* ((default-object (save-excursion
                            (let ((bounds (with-syntax-table python-dotty-syntax-table
                                            (bounds-of-thing-at-point 'symbol))))
@@ -2217,24 +2316,29 @@
     (cond
      ;; An elpy warning (i.e. index not ready) is returned as a string.
      ((stringp possible-imports)
-      (list ""))
+      "")
      ;; If there is no candidate, we exit immediately.
      ((null possible-imports)
       (message "No import candidate found")
-      (list ""))
+      "")
      ;; We have some candidates, let the user choose one.
      (t
-      (let ((first-choice (car possible-imports))
-            (user-choice (completing-read statement-prompt possible-imports)))
-        (list (if (equal user-choice "") first-choice user-choice)))))))
-
-(defun elpy-importmagic-add-import (statement)
-  "Prompt to import thing at point, show possbile imports and add selected import."
-  (interactive (elpy-importmagic--add-import-read-args))
-  (unless (equal statement "")
-    (let* ((res (elpy-rpc "add_import" (list buffer-file-name
-                                             (elpy-rpc--buffer-contents)
-                                             statement))))
+      (let* ((first-choice (car possible-imports))
+	     (user-choice (completing-read statement-prompt possible-imports))
+	     (alias (if ask-for-alias (read-string (format "Import \"%s\" as: " object-to-import)) "")))
+	(concat (if (equal user-choice "") first-choice user-choice)
+		(if (not (or (equal alias "") (equal alias object-to-import))) (concat " as " alias))))))))
+
+(defun elpy-importmagic-add-import (&optional statement ask-for-alias)
+  "Prompt to import thing at point, show possible imports and add selected import.
+
+With prefix arg, also ask for an import alias."
+  (interactive "i\nP")
+  (let* ((statement (or statement (elpy-importmagic--add-import-read-args nil nil ask-for-alias)))
+	 (res (elpy-rpc "add_import" (list buffer-file-name
+					   (elpy-rpc--buffer-contents)
+					   statement))))
+    (unless (equal statement "")
       (elpy-buffer--replace-block res))))
 
 (defun elpy-importmagic-fixup ()
@@ -2244,13 +2348,24 @@
   (interactive)
   ;; get all unresolved names, and interactively add imports for them
   (let* ((res (elpy-rpc "get_unresolved_symbols" (list buffer-file-name
-                                                       (elpy-rpc--buffer-contents)))))
+						       (elpy-rpc--buffer-contents))))
+	 (unresolved-aliases (list)))
     (unless (stringp res)
       (if (null res) (message "No imports to add."))
       (dolist (object res)
         (let* ((prompt (format "How to import \"%s\": " object))
-               (choice (elpy-importmagic--add-import-read-args object prompt)))
-          (elpy-importmagic-add-import (car choice))))))
+               (choice (elpy-importmagic--add-import-read-args object prompt nil)))
+	  (when (equal choice "")
+	    (add-to-list 'unresolved-aliases (car (split-string object "\\."))))
+	  (elpy-importmagic-add-import choice nil))))
+    ;; ask for unresolved aliases real names and add import for them
+    (dolist (alias unresolved-aliases)
+      (let* ((object (read-string (format "Real name of \"%s\" alias: " alias nil)))
+	     (prompt (format "How to import \"%s\": " object))
+	     (choice (concat
+		      (elpy-importmagic--add-import-read-args object prompt nil)
+		      (concat " as " alias))))
+	(elpy-importmagic-add-import choice nil))))
   ;; now get a new import statement block (this also sorts)
   (let* ((res (elpy-rpc "remove_unreferenced_imports" (list buffer-file-name
                                                             (elpy-rpc--buffer-contents)))))
@@ -2288,14 +2403,18 @@
     (if (use-region-p)
         (let ((new-block (elpy-rpc method (list (elpy-rpc--region-contents))))
               (beg (region-beginning)) (end (region-end)))
-          (elpy-buffer--replace-region beg end new-block))
+          (elpy-buffer--replace-region
+           beg end
+           (replace-regexp-in-string "\n$" "" new-block))
+          (goto-char end)
+          (deactivate-mark))
       ;; Vector instead of list, json.el in Emacs 24.3 and before
       ;; breaks for single-element lists of alists.
       (let ((new-block (elpy-rpc method (vector (elpy-rpc--buffer-contents))))
             (beg (point-min)) (end (point-max)))
-        (elpy-buffer--replace-region beg end new-block)))
-    (forward-line (1- line))
-    (forward-char col)))
+        (elpy-buffer--replace-region beg end new-block)
+        (forward-line (1- line))
+        (forward-char col)))))
 
 ;;;;;;;;;;;;;;
 ;;; Multi-Edit
@@ -3218,7 +3337,7 @@
   "Remove the lighter for MODE-NAME.
 
 It should not be necessary to see (Python Elpy yas company ElDoc) all the
-time. 
+time.
 
 If you need your modeline, you can set the variable `elpy-remove-modeline-lighter' to nil
 "
@@ -3571,10 +3690,7 @@
      (require 'flymake)
      (elpy-modules-remove-modeline-lighter 'flymake-mode)
      ;; Flymake support using flake8, including warning faces.
-     (when (and (executable-find "flake8")
-                (equal python-check-command
-                       (elpy-flymake--standard-value 'python-check-command)))
-       (setq python-check-command "flake8"))
+     (setq python-check-command elpy-syntax-check-command)
 
      ;; Add our initializer function
      (add-to-list 'flymake-allowed-file-name-masks
@@ -3655,13 +3771,6 @@
                    err-info
                    ", ")))))
 
-(defun elpy-flymake--standard-value (var)
-  "Return the standard value of the given variable."
-  (let ((sv (get var 'standard-value)))
-    (when (consp sv)
-      (ignore-errors
-        (eval (car sv))))))
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Module: Highlight Indentation
 
@@ -3720,6 +3829,17 @@
      (yas-minor-mode -1))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Module: Elpy-Django
+
+(defun elpy-module-django (command &rest args)
+  "Module to provide Django support."
+  (pcase command
+    (`buffer-init
+     (elpy-django-setup))
+    (`buffer-stop
+     (elpy-django -1))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Backwards compatibility
 
 ;; Functions for Emacs 24 before 24.3
rename from elpa/elpy-1.12.0/elpy/__init__.py
rename to elpa/elpy-1.14.1/elpy/__init__.py
--- a/elpa/elpy-1.12.0/elpy/__init__.py
+++ b/elpa/elpy-1.14.1/elpy/__init__.py
@@ -37,5 +37,5 @@
 """
 
 __author__ = "Jorgen Schaefer"
-__version__ = "1.12.0"
+__version__ = "1.14.1"
 __license__ = "GPL"
rename from elpa/elpy-1.12.0/elpy/__main__.py
rename to elpa/elpy-1.14.1/elpy/__main__.py
rename from elpa/elpy-1.12.0/elpy/auto_pep8.py
rename to elpa/elpy-1.14.1/elpy/auto_pep8.py
rename from elpa/elpy-1.12.0/elpy/compat.py
rename to elpa/elpy-1.14.1/elpy/compat.py
rename from elpa/elpy-1.12.0/elpy/impmagic.py
rename to elpa/elpy-1.14.1/elpy/impmagic.py
--- a/elpa/elpy-1.12.0/elpy/impmagic.py
+++ b/elpa/elpy-1.14.1/elpy/impmagic.py
@@ -71,15 +71,26 @@
     def add_import(self, source, statement):
         imports = importmagic.importer.Imports(self.symbol_index, source)
         if statement.startswith('import '):
-            modname = statement[7:]
-            imports.add_import(modname)
+            sepalias = None
+            alias = None
+            if ' as ' in statement:
+                sepalias = statement.find(' as ')
+                alias = statement[sepalias+4:]
+            modname = statement[7:sepalias]
+            imports.add_import(modname, alias)
             self.favorites.add(modname)
         else:
             sep = statement.find(' import ')
+            sepalias = None
+            alias = None
+            if ' as ' in statement:
+                sepalias = statement.find(' as ')
+                alias = statement[sepalias+4:]
             modname = statement[5:sep]
+            name = statement[sep+8:sepalias]
             if sep > -1:
                 self.favorites.add(modname)
-                imports.add_import_from(statement[5:sep], statement[sep+8:])
+                imports.add_import_from(modname, name, alias)
         start_line, end_line, import_block = imports.get_update()
         return start_line, end_line, import_block
 
rename from elpa/elpy-1.12.0/elpy/jedibackend.py
rename to elpa/elpy-1.14.1/elpy/jedibackend.py
rename from elpa/elpy-1.12.0/elpy/pydocutils.py
rename to elpa/elpy-1.14.1/elpy/pydocutils.py
rename from elpa/elpy-1.12.0/elpy/refactor.py
rename to elpa/elpy-1.14.1/elpy/refactor.py
rename from elpa/elpy-1.12.0/elpy/ropebackend.py
rename to elpa/elpy-1.14.1/elpy/ropebackend.py
rename from elpa/elpy-1.12.0/elpy/rpc.py
rename to elpa/elpy-1.14.1/elpy/rpc.py
rename from elpa/elpy-1.12.0/elpy/server.py
rename to elpa/elpy-1.14.1/elpy/server.py
rename from elpa/elpy-1.12.0/elpy/tests/__init__.py
rename to elpa/elpy-1.14.1/elpy/tests/__init__.py
rename from elpa/elpy-1.12.0/elpy/tests/compat.py
rename to elpa/elpy-1.14.1/elpy/tests/compat.py
rename from elpa/elpy-1.12.0/elpy/tests/support.py
rename to elpa/elpy-1.14.1/elpy/tests/support.py
rename from elpa/elpy-1.12.0/elpy/tests/test_auto_pep8.py
rename to elpa/elpy-1.14.1/elpy/tests/test_auto_pep8.py
rename from elpa/elpy-1.12.0/elpy/tests/test_impmagic.py
rename to elpa/elpy-1.14.1/elpy/tests/test_impmagic.py
rename from elpa/elpy-1.12.0/elpy/tests/test_jedibackend.py
rename to elpa/elpy-1.14.1/elpy/tests/test_jedibackend.py
rename from elpa/elpy-1.12.0/elpy/tests/test_pydocutils.py
rename to elpa/elpy-1.14.1/elpy/tests/test_pydocutils.py
rename from elpa/elpy-1.12.0/elpy/tests/test_refactor.py
rename to elpa/elpy-1.14.1/elpy/tests/test_refactor.py
rename from elpa/elpy-1.12.0/elpy/tests/test_ropebackend.py
rename to elpa/elpy-1.14.1/elpy/tests/test_ropebackend.py
rename from elpa/elpy-1.12.0/elpy/tests/test_rpc.py
rename to elpa/elpy-1.14.1/elpy/tests/test_rpc.py
rename from elpa/elpy-1.12.0/elpy/tests/test_server.py
rename to elpa/elpy-1.14.1/elpy/tests/test_server.py
rename from elpa/elpy-1.12.0/elpy/tests/test_support.py
rename to elpa/elpy-1.14.1/elpy/tests/test_support.py
rename from elpa/elpy-1.12.0/elpy/tests/test_yapf.py
rename to elpa/elpy-1.14.1/elpy/tests/test_yapf.py
--- a/elpa/elpy-1.12.0/elpy/tests/test_yapf.py
+++ b/elpa/elpy-1.14.1/elpy/tests/test_yapf.py
@@ -1,10 +1,10 @@
 # coding: utf-8
 """Tests for the elpy.yapf module"""
 
-import sys
 import unittest
 
 from elpy import yapfutil
+from elpy.rpc import Fault
 from elpy.tests.support import BackendTestCase
 
 
@@ -12,9 +12,13 @@
                  'yapf not supported for current python version')
 class YAPFTestCase(BackendTestCase):
     def setUp(self):
-        if not yapfutil.YAPF_NOT_SUPPORTED:
+        if yapfutil.YAPF_NOT_SUPPORTED:
             raise unittest.SkipTest
 
+    def test_fix_code_should_throw_error_for_invalid_code(self):
+        src = 'x = '
+        self.assertRaises(Fault, yapfutil.fix_code, src)
+
     def test_fix_code(self):
         testdata = [
             ('x=       123\n', 'x = 123\n'),
rename from elpa/elpy-1.12.0/elpy/yapfutil.py
rename to elpa/elpy-1.14.1/elpy/yapfutil.py
--- a/elpa/elpy-1.12.0/elpy/yapfutil.py
+++ b/elpa/elpy-1.14.1/elpy/yapfutil.py
@@ -4,10 +4,11 @@
 
 import os
 import sys
+
 from elpy.rpc import Fault
 
 YAPF_NOT_SUPPORTED = sys.version_info < (2, 7) or (
-    sys.version_info >= (3, 0) and sys.version_info <= (3, 3))
+    sys.version_info >= (3, 0) and sys.version_info < (3, 4))
 
 try:
     if YAPF_NOT_SUPPORTED:
@@ -26,8 +27,12 @@
     if not yapf_api:
         raise Fault('yapf not installed', code=400)
     style_config = file_resources.GetDefaultStyleForDir(os.getcwd())
-    reformatted_source, _ = yapf_api.FormatCode(code,
-                                                filename='<stdin>',
-                                                style_config=style_config,
-                                                verify=False)
-    return reformatted_source
+    try:
+        reformatted_source, _ = yapf_api.FormatCode(code,
+                                                    filename='<stdin>',
+                                                    style_config=style_config,
+                                                    verify=False)
+        return reformatted_source
+    except Exception as e:
+            raise Fault("Error during formatting: {}".format(e),
+                        code=400)
rename from elpa/elpy-1.12.0/snippets/python-mode/.yas-setup.el
rename to elpa/elpy-1.14.1/snippets/python-mode/.yas-setup.el
rename from elpa/elpy-1.12.0/snippets/python-mode/__abs__
rename to elpa/elpy-1.14.1/snippets/python-mode/__abs__
rename from elpa/elpy-1.12.0/snippets/python-mode/__add__
rename to elpa/elpy-1.14.1/snippets/python-mode/__add__
rename from elpa/elpy-1.12.0/snippets/python-mode/__and__
rename to elpa/elpy-1.14.1/snippets/python-mode/__and__
rename from elpa/elpy-1.12.0/snippets/python-mode/__bool__
rename to elpa/elpy-1.14.1/snippets/python-mode/__bool__
rename from elpa/elpy-1.12.0/snippets/python-mode/__call__
rename to elpa/elpy-1.14.1/snippets/python-mode/__call__
rename from elpa/elpy-1.12.0/snippets/python-mode/__cmp__
rename to elpa/elpy-1.14.1/snippets/python-mode/__cmp__
rename from elpa/elpy-1.12.0/snippets/python-mode/__coerce__
rename to elpa/elpy-1.14.1/snippets/python-mode/__coerce__
rename from elpa/elpy-1.12.0/snippets/python-mode/__complex__
rename to elpa/elpy-1.14.1/snippets/python-mode/__complex__
rename from elpa/elpy-1.12.0/snippets/python-mode/__contains__
rename to elpa/elpy-1.14.1/snippets/python-mode/__contains__
rename from elpa/elpy-1.12.0/snippets/python-mode/__del__
rename to elpa/elpy-1.14.1/snippets/python-mode/__del__
rename from elpa/elpy-1.12.0/snippets/python-mode/__delattr__
rename to elpa/elpy-1.14.1/snippets/python-mode/__delattr__
rename from elpa/elpy-1.12.0/snippets/python-mode/__delete__
rename to elpa/elpy-1.14.1/snippets/python-mode/__delete__
rename from elpa/elpy-1.12.0/snippets/python-mode/__delitem__
rename to elpa/elpy-1.14.1/snippets/python-mode/__delitem__
rename from elpa/elpy-1.12.0/snippets/python-mode/__div__
rename to elpa/elpy-1.14.1/snippets/python-mode/__div__
rename from elpa/elpy-1.12.0/snippets/python-mode/__divmod__
rename to elpa/elpy-1.14.1/snippets/python-mode/__divmod__
rename from elpa/elpy-1.12.0/snippets/python-mode/__enter__
rename to elpa/elpy-1.14.1/snippets/python-mode/__enter__
rename from elpa/elpy-1.12.0/snippets/python-mode/__eq__
rename to elpa/elpy-1.14.1/snippets/python-mode/__eq__
rename from elpa/elpy-1.12.0/snippets/python-mode/__exit__
rename to elpa/elpy-1.14.1/snippets/python-mode/__exit__
rename from elpa/elpy-1.12.0/snippets/python-mode/__float__
rename to elpa/elpy-1.14.1/snippets/python-mode/__float__
rename from elpa/elpy-1.12.0/snippets/python-mode/__floordiv__
rename to elpa/elpy-1.14.1/snippets/python-mode/__floordiv__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ge__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ge__
rename from elpa/elpy-1.12.0/snippets/python-mode/__get__
rename to elpa/elpy-1.14.1/snippets/python-mode/__get__
rename from elpa/elpy-1.12.0/snippets/python-mode/__getattr__
rename to elpa/elpy-1.14.1/snippets/python-mode/__getattr__
rename from elpa/elpy-1.12.0/snippets/python-mode/__getattribute__
rename to elpa/elpy-1.14.1/snippets/python-mode/__getattribute__
rename from elpa/elpy-1.12.0/snippets/python-mode/__getitem__
rename to elpa/elpy-1.14.1/snippets/python-mode/__getitem__
rename from elpa/elpy-1.12.0/snippets/python-mode/__gt__
rename to elpa/elpy-1.14.1/snippets/python-mode/__gt__
rename from elpa/elpy-1.12.0/snippets/python-mode/__hash__
rename to elpa/elpy-1.14.1/snippets/python-mode/__hash__
rename from elpa/elpy-1.12.0/snippets/python-mode/__hex__
rename to elpa/elpy-1.14.1/snippets/python-mode/__hex__
rename from elpa/elpy-1.12.0/snippets/python-mode/__iadd__
rename to elpa/elpy-1.14.1/snippets/python-mode/__iadd__
rename from elpa/elpy-1.12.0/snippets/python-mode/__iand__
rename to elpa/elpy-1.14.1/snippets/python-mode/__iand__
rename from elpa/elpy-1.12.0/snippets/python-mode/__idiv__
rename to elpa/elpy-1.14.1/snippets/python-mode/__idiv__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ifloordiv__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ifloordiv__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ilshift__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ilshift__
rename from elpa/elpy-1.12.0/snippets/python-mode/__imod__
rename to elpa/elpy-1.14.1/snippets/python-mode/__imod__
rename from elpa/elpy-1.12.0/snippets/python-mode/__imul__
rename to elpa/elpy-1.14.1/snippets/python-mode/__imul__
rename from elpa/elpy-1.12.0/snippets/python-mode/__index__
rename to elpa/elpy-1.14.1/snippets/python-mode/__index__
rename from elpa/elpy-1.12.0/snippets/python-mode/__init__
rename to elpa/elpy-1.14.1/snippets/python-mode/__init__
rename from elpa/elpy-1.12.0/snippets/python-mode/__instancecheck__
rename to elpa/elpy-1.14.1/snippets/python-mode/__instancecheck__
rename from elpa/elpy-1.12.0/snippets/python-mode/__int__
rename to elpa/elpy-1.14.1/snippets/python-mode/__int__
rename from elpa/elpy-1.12.0/snippets/python-mode/__invert__
rename to elpa/elpy-1.14.1/snippets/python-mode/__invert__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ior__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ior__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ipow__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ipow__
rename from elpa/elpy-1.12.0/snippets/python-mode/__irshift__
rename to elpa/elpy-1.14.1/snippets/python-mode/__irshift__
rename from elpa/elpy-1.12.0/snippets/python-mode/__isub__
rename to elpa/elpy-1.14.1/snippets/python-mode/__isub__
rename from elpa/elpy-1.12.0/snippets/python-mode/__iter__
rename to elpa/elpy-1.14.1/snippets/python-mode/__iter__
rename from elpa/elpy-1.12.0/snippets/python-mode/__itruediv__
rename to elpa/elpy-1.14.1/snippets/python-mode/__itruediv__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ixor__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ixor__
rename from elpa/elpy-1.12.0/snippets/python-mode/__le__
rename to elpa/elpy-1.14.1/snippets/python-mode/__le__
rename from elpa/elpy-1.12.0/snippets/python-mode/__len__
rename to elpa/elpy-1.14.1/snippets/python-mode/__len__
rename from elpa/elpy-1.12.0/snippets/python-mode/__long__
rename to elpa/elpy-1.14.1/snippets/python-mode/__long__
rename from elpa/elpy-1.12.0/snippets/python-mode/__lshift__
rename to elpa/elpy-1.14.1/snippets/python-mode/__lshift__
rename from elpa/elpy-1.12.0/snippets/python-mode/__lt__
rename to elpa/elpy-1.14.1/snippets/python-mode/__lt__
rename from elpa/elpy-1.12.0/snippets/python-mode/__mod__
rename to elpa/elpy-1.14.1/snippets/python-mode/__mod__
rename from elpa/elpy-1.12.0/snippets/python-mode/__mul__
rename to elpa/elpy-1.14.1/snippets/python-mode/__mul__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ne__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ne__
rename from elpa/elpy-1.12.0/snippets/python-mode/__neg__
rename to elpa/elpy-1.14.1/snippets/python-mode/__neg__
rename from elpa/elpy-1.12.0/snippets/python-mode/__new__
rename to elpa/elpy-1.14.1/snippets/python-mode/__new__
rename from elpa/elpy-1.12.0/snippets/python-mode/__nonzero__
rename to elpa/elpy-1.14.1/snippets/python-mode/__nonzero__
rename from elpa/elpy-1.12.0/snippets/python-mode/__oct__
rename to elpa/elpy-1.14.1/snippets/python-mode/__oct__
rename from elpa/elpy-1.12.0/snippets/python-mode/__or__
rename to elpa/elpy-1.14.1/snippets/python-mode/__or__
rename from elpa/elpy-1.12.0/snippets/python-mode/__pos__
rename to elpa/elpy-1.14.1/snippets/python-mode/__pos__
rename from elpa/elpy-1.12.0/snippets/python-mode/__pow__
rename to elpa/elpy-1.14.1/snippets/python-mode/__pow__
rename from elpa/elpy-1.12.0/snippets/python-mode/__radd__
rename to elpa/elpy-1.14.1/snippets/python-mode/__radd__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rand__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rand__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rdivmod__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rdivmod__
rename from elpa/elpy-1.12.0/snippets/python-mode/__repr__
rename to elpa/elpy-1.14.1/snippets/python-mode/__repr__
rename from elpa/elpy-1.12.0/snippets/python-mode/__reversed__
rename to elpa/elpy-1.14.1/snippets/python-mode/__reversed__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rfloordiv__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rfloordiv__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rlshift__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rlshift__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rmod__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rmod__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rmul__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rmul__
rename from elpa/elpy-1.12.0/snippets/python-mode/__ror__
rename to elpa/elpy-1.14.1/snippets/python-mode/__ror__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rpow__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rpow__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rrshift__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rrshift__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rshift__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rshift__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rsub__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rsub__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rtruediv__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rtruediv__
rename from elpa/elpy-1.12.0/snippets/python-mode/__rxor__
rename to elpa/elpy-1.14.1/snippets/python-mode/__rxor__
rename from elpa/elpy-1.12.0/snippets/python-mode/__set__
rename to elpa/elpy-1.14.1/snippets/python-mode/__set__
rename from elpa/elpy-1.12.0/snippets/python-mode/__setattr__
rename to elpa/elpy-1.14.1/snippets/python-mode/__setattr__
rename from elpa/elpy-1.12.0/snippets/python-mode/__setitem__
rename to elpa/elpy-1.14.1/snippets/python-mode/__setitem__
rename from elpa/elpy-1.12.0/snippets/python-mode/__slots__
rename to elpa/elpy-1.14.1/snippets/python-mode/__slots__
rename from elpa/elpy-1.12.0/snippets/python-mode/__str__
rename to elpa/elpy-1.14.1/snippets/python-mode/__str__
rename from elpa/elpy-1.12.0/snippets/python-mode/__sub__
rename to elpa/elpy-1.14.1/snippets/python-mode/__sub__
rename from elpa/elpy-1.12.0/snippets/python-mode/__subclasscheck__
rename to elpa/elpy-1.14.1/snippets/python-mode/__subclasscheck__
rename from elpa/elpy-1.12.0/snippets/python-mode/__truediv__
rename to elpa/elpy-1.14.1/snippets/python-mode/__truediv__
rename from elpa/elpy-1.12.0/snippets/python-mode/__unicode__
rename to elpa/elpy-1.14.1/snippets/python-mode/__unicode__
rename from elpa/elpy-1.12.0/snippets/python-mode/__xor__
rename to elpa/elpy-1.14.1/snippets/python-mode/__xor__
rename from elpa/elpy-1.12.0/snippets/python-mode/ase
rename to elpa/elpy-1.14.1/snippets/python-mode/ase
rename from elpa/elpy-1.12.0/snippets/python-mode/asne
rename to elpa/elpy-1.14.1/snippets/python-mode/asne
rename from elpa/elpy-1.12.0/snippets/python-mode/asr
rename to elpa/elpy-1.14.1/snippets/python-mode/asr
rename from elpa/elpy-1.12.0/snippets/python-mode/class
rename to elpa/elpy-1.14.1/snippets/python-mode/class
rename from elpa/elpy-1.12.0/snippets/python-mode/defs
rename to elpa/elpy-1.14.1/snippets/python-mode/defs
rename from elpa/elpy-1.12.0/snippets/python-mode/enc
rename to elpa/elpy-1.14.1/snippets/python-mode/enc
rename from elpa/elpy-1.12.0/snippets/python-mode/env
rename to elpa/elpy-1.14.1/snippets/python-mode/env
rename from elpa/elpy-1.12.0/snippets/python-mode/from
rename to elpa/elpy-1.14.1/snippets/python-mode/from
rename from elpa/elpy-1.12.0/snippets/python-mode/pdb
rename to elpa/elpy-1.14.1/snippets/python-mode/pdb
rename from elpa/elpy-1.12.0/snippets/python-mode/py3
rename to elpa/elpy-1.14.1/snippets/python-mode/py3
rename from elpa/elpy-1.12.0/snippets/python-mode/super
rename to elpa/elpy-1.14.1/snippets/python-mode/super
new file mode 100644
--- /dev/null
+++ b/elpa/elpy-readme.txt
@@ -0,0 +1,9 @@
+The Emacs Lisp Python Environment in Emacs
+
+Elpy is an Emacs package to bring powerful Python editing to Emacs.
+It combines a number of existing Emacs packages, both written in
+Emacs Lisp as well as Python.
+
+For more information, read the Elpy manual:
+
+https://elpy.readthedocs.io/en/latest/index.html
rename from elpa/find-file-in-project-3.3/find-file-in-project-autoloads.el
rename to elpa/find-file-in-project-5.2.7/find-file-in-project-autoloads.el
--- a/elpa/find-file-in-project-3.3/find-file-in-project-autoloads.el
+++ b/elpa/find-file-in-project-5.2.7/find-file-in-project-autoloads.el
@@ -1,47 +1,198 @@
 ;;; find-file-in-project-autoloads.el --- automatically extracted autoloads
 ;;
 ;;; Code:
-
+(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
 
-;;;### (autoloads (find-file-in-project) "find-file-in-project" "find-file-in-project.el"
-;;;;;;  (21577 27287 750628 15000))
+;;;### (autoloads nil "find-file-in-project" "find-file-in-project.el"
+;;;;;;  (22708 23354 926996 297000))
 ;;; Generated autoloads from find-file-in-project.el
 
+(autoload 'ffip-diff-backend-git-show-commit "find-file-in-project" "\
+
+
+\(fn)" nil nil)
+
+(autoload 'ffip-diff-backend-hg-show-commit "find-file-in-project" "\
+
+
+\(fn)" nil nil)
+
+(autoload 'ffip-copy-without-change "find-file-in-project" "\
+
+
+\(fn P)" nil nil)
+
+(autoload 'ffip-copy-reactjs-import "find-file-in-project" "\
+
+
+\(fn P)" nil nil)
+
+(autoload 'ffip-copy-org-file-link "find-file-in-project" "\
+
+
+\(fn P)" nil nil)
+
+(defvar ffip-find-relative-path-callback 'ffip-copy-without-change)
+
+(autoload 'ffip-project-root "find-file-in-project" "\
+Return the root of the project.
+
+\(fn)" nil nil)
+
+(autoload 'ffip-save-ivy-last "find-file-in-project" "\
+Save `ivy-last' into `ffip-ivy-last-saved'.  Requires `ivy-mode'.
+
+\(fn)" t nil)
+
+(autoload 'ffip-get-project-root-directory "find-file-in-project" "\
+Get the full path of project root directory.
+
+\(fn)" nil nil)
+
+(autoload 'ffip-ivy-resume "find-file-in-project" "\
+Wrapper of `ivy-resume'.  Resume the search saved at `ffip-ivy-last-saved'.
+
+\(fn)" t nil)
+
+(autoload 'ffip-filename-identity "find-file-in-project" "\
+Return identical KEYWORD.
+
+\(fn KEYWORD)" nil nil)
+
+(autoload 'ffip-filename-camelcase-to-dashes "find-file-in-project" "\
+Convert KEYWORD from camel cased to dash seperated.
+If CHECK-ONLY is true, only do the check.
+
+\(fn KEYWORD &optional CHECK-ONLY)" nil nil)
+
+(autoload 'ffip-filename-dashes-to-camelcase "find-file-in-project" "\
+Convert KEYWORD from dash seperated to camel cased.
+If CHECK-ONLY is true, only do the check.
+
+\(fn KEYWORD &optional CHECK-ONLY)" nil nil)
+
+(autoload 'ffip-completing-read "find-file-in-project" "\
+
+
+\(fn PROMPT COLLECTION ACTION)" nil nil)
+
+(autoload 'ffip-project-search "find-file-in-project" "\
+Return an alist of all filenames in the project and their path.
+
+Files with duplicate filenames are suffixed with the name of the
+directory they are found in so that they are unique.
+
+If KEYWORD is string, it's the file name or file path to find file.
+If KEYWORD is list, it's the list of file names.
+
+\(fn KEYWORD FIND-DIRECTORY)" nil nil)
+
+(autoload 'ffip-find-files "find-file-in-project" "\
+The API to find files.
+
+\(fn KEYWORD OPEN-ANOTHER-WINDOW &optional FIND-DIRECTORY FN)" nil nil)
+
+(autoload 'ffip-create-project-file "find-file-in-project" "\
+Create or Append .dir-locals.el to set up per directory.
+You can move .dir-locals.el to root directory.
+See (info \"(Emacs) Directory Variables\") for details.
+
+\(fn)" t nil)
+
+(autoload 'ffip-current-full-filename-match-pattern-p "find-file-in-project" "\
+Is current full file name (including directory) match the REGEX?
+
+\(fn REGEX)" nil nil)
+
 (autoload 'find-file-in-project "find-file-in-project" "\
 Prompt with a completing list of all files in the project to find one.
 
+If OPEN-ANOTHER-WINDOW is not nil, the file will be opened in new window.
+
 The project's scope is defined as the first directory containing
-an `.emacs-project' file.  You can override this by locally
-setting the variable `ffip-project-root'.
+a `ffip-project-file' whose value is \".git\" by default.
+
+You can override this by setting the variable `ffip-project-root'.
+
+\(fn &optional OPEN-ANOTHER-WINDOW)" t nil)
+
+(autoload 'find-file-in-current-directory "find-file-in-project" "\
+Like `find-file-in-project'.  But search only in current directory.
+
+\(fn &optional OPEN-ANOTHER-WINDOW)" t nil)
+
+(autoload 'find-file-in-project-by-selected "find-file-in-project" "\
+Similar to `find-file-in-project'.
+But use string from selected region to search files in the project.
+If no region is selected, you need provide keyword.
+
+Keyword could be ANY part of the file's full path and support wildcard.
+For example, to find /home/john/proj1/test.js, below keywords are valid:
+- test.js
+- roj1/tes
+- john*test
+
+If keyword contains line number like \"hello.txt:32\" or \"hello.txt:32:\",
+we will move to that line in opened file.
+
+If OPEN-ANOTHER-WINDOW is not nil, the file will be opened in new window.
+
+\(fn &optional OPEN-ANOTHER-WINDOW)" t nil)
 
-\(fn)" t nil)
+(autoload 'find-file-in-current-directory-by-selected "find-file-in-project" "\
+Like `find-file-in-project-by-selected'.  But search only in current directory.
+
+\(fn &optional OPEN-ANOTHER-WINDOW)" t nil)
+
+(autoload 'find-relative-path "find-file-in-project" "\
+Find file/directory and copy its relative path into `kill-ring'.
+Optional prefix FIND-DIRECTORY copy the directory path; file path by default.
+
+You can set `ffip-find-relative-path-callback' to format the string before copying,
+  (setq ffip-find-relative-path-callback 'ffip-copy-reactjs-import)
+  (setq ffip-find-relative-path-callback 'ffip-copy-org-file-link)
+
+\(fn &optional FIND-DIRECTORY)" t nil)
+
+(autoload 'find-directory-in-project-by-selected "find-file-in-project" "\
+Similar to `find-file-in-project-by-selected'.
+Use string from selected region to find directory in the project.
+If no region is selected, you need provide keyword.
+
+Keyword could be directory's base-name only or parent-directoy+base-name
+For example, to find /home/john/proj1/test, below keywords are valid:
+- test
+- roj1/test
+- john*test
+
+If OPEN-ANOTHER-WINDOW is not nil, the file will be opened in new window.
+
+\(fn &optional OPEN-ANOTHER-WINDOW)" t nil)
 
 (defalias 'ffip 'find-file-in-project)
 
-(put 'ffip-patterns 'safe-local-variable 'listp)
+(autoload 'ffip-diff-quit "find-file-in-project" "\
+
 
-(put 'ffip-find-options 'safe-local-variable 'stringp)
+\(fn)" t nil)
 
-(put 'ffip-project-file 'safe-local-variable 'stringp)
+(autoload 'ffip-diff-find-file "find-file-in-project" "\
+File file(s) in current hunk.
 
-(put 'ffip-project-root 'safe-local-variable 'stringp)
+\(fn &optional OPEN-ANOTHER-WINDOW)" t nil)
 
-(put 'ffip-project-root-function 'safe-local-variable 'functionp)
+(autoload 'ffip-show-diff "find-file-in-project" "\
+Show the diff output by excuting selected `ffip-diff-backends'.
+NUM is the index selected backend from `ffip-diff-backends'.
+NUM is zero based.  Its default value is zero.
 
-(put 'ffip-limit 'safe-local-variable 'integerp)
+\(fn &optional NUM)" t nil)
 
 ;;;***
 
-;;;### (autoloads nil nil ("find-file-in-project-pkg.el") (21577
-;;;;;;  27287 829530 22000))
-
-;;;***
-
-(provide 'find-file-in-project-autoloads)
 ;; Local Variables:
 ;; version-control: never
 ;; no-byte-compile: t
 ;; no-update-autoloads: t
-;; coding: utf-8
 ;; End:
 ;;; find-file-in-project-autoloads.el ends here
rename from elpa/find-file-in-project-3.3/find-file-in-project-pkg.el
rename to elpa/find-file-in-project-5.2.7/find-file-in-project-pkg.el
--- a/elpa/find-file-in-project-3.3/find-file-in-project-pkg.el
+++ b/elpa/find-file-in-project-5.2.7/find-file-in-project-pkg.el
@@ -1,1 +1,1 @@
-(define-package "find-file-in-project" "3.3" "Find files in a project quickly." (quote nil))
+(define-package "find-file-in-project" "5.2.7" "Find files in a project quickly, on any OS" '((ivy "0.7.0") (emacs "24.3")) :url "https://github.com/technomancy/find-file-in-project" :keywords '("project" "convenience"))
rename from elpa/find-file-in-project-3.3/find-file-in-project.el
rename to elpa/find-file-in-project-5.2.7/find-file-in-project.el
--- a/elpa/find-file-in-project-3.3/find-file-in-project.el
+++ b/elpa/find-file-in-project-5.2.7/find-file-in-project.el
@@ -1,12 +1,14 @@
-;;; find-file-in-project.el --- Find files in a project quickly.
-
-;; Copyright (C) 2006-2009, 2011-2012
-;;   Phil Hagelberg, Doug Alcorn, and Will Farrington
+;;; find-file-in-project.el --- Find files in a project quickly, on any OS
 
+;; Copyright (C) 2006-2009, 2011-2012, 2015, 2016
+;;   Phil Hagelberg, Doug Alcorn, Will Farrington, Chen Bin
+;;
+;; Version: 5.2.7
+;; Package-Version: 5.2.7
 ;; Author: Phil Hagelberg, Doug Alcorn, and Will Farrington
-;; URL: http://www.emacswiki.org/cgi-bin/wiki/FindFileInProject
-;; Git: git://github.com/technomancy/find-file-in-project.git
-;; Version: 3.3
+;; Maintainer: Chen Bin <chenbin.sh@gmail.com>
+;; URL: https://github.com/technomancy/find-file-in-project
+;; Package-Requires: ((ivy "0.7.0") (emacs "24.3"))
 ;; Created: 2008-03-18
 ;; Keywords: project, convenience
 ;; EmacsWiki: FindFileInProject
@@ -32,49 +34,227 @@
 
 ;;; Commentary:
 
-;; This library provides a couple methods for quickly finding any file
+;; This program provides a couple methods for quickly finding any file
 ;; in a given project.  It depends on GNU find.
-
+;;
+;; Usage,
+;;   - `M-x find-file-in-project-by-selected' use the selected region
+;;      as the keyword to search file.  Or you need provide the keyword
+;;      if no region selected.
+;;   - `M-x find-directory-in-project-by-selected' use the select region
+;;      to find directory.  Or you need provide the keyword if no region
+;;      selected.
+;;   - `M-x find-file-in-project' will start search file immediately
+;;   - `M-x ffip-create-project-file' create .dir-locals.el
+;;
 ;; A project is found by searching up the directory tree until a file
-;; is found that matches `ffip-project-file'.  (".git" by default.)
+;; is found that matches `ffip-project-file'.
 ;; You can set `ffip-project-root-function' to provide an alternate
 ;; function to search for the project root.  By default, it looks only
 ;; for files whose names match `ffip-patterns',
 
 ;; If you have so many files that it becomes unwieldy, you can set
 ;; `ffip-find-options' to a string which will be passed to the `find'
-;; invocation in order to exclude irrelevant subdirectories.  For
-;; instance, in a Ruby on Rails project, you may be interested in all
+;; invocation in order to exclude irrelevant subdirectories/files.
+;; For instance, in a Ruby on Rails project, you are interested in all
 ;; .rb files that don't exist in the "vendor" directory.  In that case
 ;; you could set `ffip-find-options' to "-not -regex \".*vendor.*\"".
 
+;; The variable `ffip-filename-rules' create some extra file names for
+;; search when calling `find-file-in-project-by-selected'. For example,
+;; When file basename `helloWorld' provided, `HelloWorld', `hello-world'
+;; are added as the file name search patterns.
+;; `C-h v ffip-filename-rules' to see its default value.
+;;
 ;; All these variables may be overridden on a per-directory basis in
 ;; your .dir-locals.el.  See (info "(Emacs) Directory Variables") for
 ;; details.
 
-;; Recommended binding: (global-set-key (kbd "C-x f") 'find-file-in-project)
+;; To find in *current directory*, use `find-file-in-current-directory'
+;; and `find-file-in-current-directory-by-selected'.
+
+;; `ffip-show-diff' execute the backend from `ffip-diff-backends'.
+;; The selected index is the parameter passed to `ffip-show-diff'
+;; whose default value in one.
+;; The output of execution is expected be in Unified Diff Format.
+;; The output is inserted into *ffip-diff* buffer.
+;; In the buffer, press "o/C-c C-c"/ENTER" or `M-x ffip-diff-find-file'
+;; to open correspong file.
+;;
+;; `ffip-diff-find-file-before-hook' is called before `ffip-diff-find-file'.
+;;
+;; If you use evil-mode, insert below code into ~/.emacs,
+;;   (defun ffip-diff-mode-hook-setup ()
+;;       (evil-local-set-key 'normal "K" 'diff-hunk-prev)
+;;       (evil-local-set-key 'normal "J" 'diff-hunk-next)
+;;       (evil-local-set-key 'normal "P" 'diff-file-prev)
+;;       (evil-local-set-key 'normal "N" 'diff-file-next)
+;;       (evil-local-set-key 'normal (kbd "RET") 'ffip-diff-find-file)
+;;       (evil-local-set-key 'normal "o" 'ffip-diff-find-file))
+;;   (add-hook 'ffip-diff-mode-hook 'ffip-diff-mode-hook-setup)
+
+;; `find-relative-path' find file/directory and copy its relative path
+;; into `kill-ring'. You can customize `ffip-find-relative-path-callback'
+;; to format the relative path,
+;;   (setq ffip-find-relative-path-callback 'ffip-copy-reactjs-import)
+;;   (setq ffip-find-relative-path-callback 'ffip-copy-org-file-link)
 
-;;; TODO:
+;; `ivy-mode' is used for filter/search UI
+;; In `ivy-mode', SPACE is translated to regex ".*".
+;; For example, the search string "dec fun pro" is transformed into
+;; regular expression "\\(dec\\).*\\(fun\\).*\\(pro\\)"
+;; `C-h i g (ivy)' for more key-binding tips.
+;;
+;; `ffip-save-ivy-last' saves the most recent search result.
+;; `ffip-ivy-resume' re-use the save result. Both requires `ivy-mode'
+;; installed.
+;;
+;; You can switch to `ido-mode' by `(setq ffip-prefer-ido-mode t)'
 
-;; Add compatibility with BSD find (PDI; I can't virtualize OS X)
+;; GNU Find can be installed,
+;;   - through `Brew' on OS X
+;;   - through `Cygwin' or `MYSYS2' on Windows.
+;; Find executable will be automatically detected. But you can manually
+;; specify the executable location by insert below code into ~/.emacs,
+;;
+;;   (if (eq system-type 'windows-nt)
+;;      (setq ffip-find-executable "c:\\\\cygwin64\\\\bin\\\\find"))
+;; This program works on Windows/Cygwin/Linux/Mac Emacs.
+;;
+;; Windows setup is as easy as installing Cygwin into default directory on
+;; ANY driver. That's all.
+;;
+;; See https://github.com/technomancy/find-file-in-project for advanced tips.
+
+;; Recommended binding: (global-set-key (kbd "C-x f") 'find-file-in-project)
 
 ;;; Code:
 
-(require 'cl)
+(require 'diff-mode)
+
+(defvar ffip-filename-rules
+  '(ffip-filename-identity
+    (ffip-filename-dashes-to-camelcase ffip-filename-camelcase-to-dashes))
+  "Rules to create extra file names for GNU Find.")
 
-(defvar ffip-project-file ".git"
-  "The file that should be used to define a project root.
+(defvar ffip-diff-find-file-before-hook nil
+  "Hook run before `ffip-diff-find-file' move focus out of *ffip-diff* buffer.")
+
+;;;###autoload
+(defun ffip-diff-backend-git-show-commit ()
+  (let* ((git-cmd "git --no-pager log --date=short --pretty=format:'%h|%ad|%s|%an'")
+         (collection (split-string (shell-command-to-string git-cmd) "\n" t)))
+    (ffip-completing-read "git log:"
+                          collection
+                          (lambda (line)
+                            (shell-command-to-string (format "git show %s" (car (split-string line "|" t))))))))
 
-May be set using .dir-locals.el. Checks each entry if set to a list.")
+;;;###autoload
+(defun ffip-diff-backend-hg-show-commit ()
+  (let* ((hg-cmd "hg log --template '{node|short}|{date|shortdate}|{desc|strip|firstline}|{author|user}\n'")
+         (collection (split-string (shell-command-to-string hg-cmd) "\n" t)))
+    (ffip-completing-read "hg log:"
+                          collection
+                          (lambda (line)
+                            (shell-command-to-string (format "hg log -p -g -r %s" (car (split-string line "|" t))))))))
 
-(defvar ffip-patterns
-  '("*.html" "*.org" "*.txt" "*.md" "*.el" "*.clj" "*.py" "*.rb" "*.js" "*.pl"
-    "*.sh" "*.erl" "*.hs" "*.ml")
+(defvar ffip-diff-backends
+  '(ffip-diff-backend-git-show-commit
+    "cd $(git rev-parse --show-toplevel) && git diff"
+    "cd $(git rev-parse --show-toplevel) && git diff --cached"
+    (car kill-ring)
+    ffip-diff-backend-hg-show-commit
+    "cd $(hg root) && hg diff"
+    "svn diff")
+  "The list of back-ends.
+If back-end is string, it is run in `shell-command-to-string'.
+If it's a function or lisp expression, it will be executed and return a string.
+
+The output of execution is inserted into *ffip-diff* buffer with `ffip-diff-mode' on.
+`ffip-diff-mode' inherits from `diff-mode'.")
+
+(defvar ffip-find-executable nil "Path of GNU find.  If nil we will guess.")
+
+(defvar ffip-project-file '(".svn" ".hg" ".git")
+  "The file/directory used to locate project root.
+May be set using .dir-locals.el.  Checks each entry if set to a list.")
+
+(defvar ffip-prefer-ido-mode (not (require 'ivy nil t))
+  "Use `ido-mode' instead of `ivy-mode' to display candidates.")
+
+(defvar ffip-patterns nil
   "List of patterns to look for with `find-file-in-project'.")
 
+(defvar ffip-match-path-instead-of-filename nil
+  "Match full path instead of file name when calling `find-file-in-project-by-selected'")
+
 (defvar ffip-prune-patterns
-  '(".git")
-  "List of directory patterns to not decend into when listing files in `find-file-in-project'.")
+  '(;; VCS
+    "*/.git/*"
+    "*/.svn/*"
+    "*/.cvs/*"
+    "*/.bzr/*"
+    "*/.hg/*"
+    ;; project misc
+    "*.log"
+    "*/bin/*"
+    ;; Mac
+    "*/.DS_Store/*"
+    ;; Ctags
+    "*/tags"
+    "*/TAGS"
+    ;; Global/Cscope
+    "*/GTAGS"
+    "*/GPATH"
+    "*/GRTAGS"
+    "*/cscope.files"
+    ;; html/javascript/css
+    "*/.npm/*"
+    "*/.tmp/*" ; TypeScript
+    "*/.sass-cache/*" ; SCSS/SASS
+    "*/.idea/*"
+    "*min.js"
+    "*min.css"
+    "*/node_modules/*"
+    "*/bower_components/*"
+    ;; Images
+    "*.png"
+    "*.jpg"
+    "*.jpeg"
+    "*.gif"
+    "*.bmp"
+    "*.tiff"
+    "*.ico"
+    ;; documents
+    "*.doc"
+    "*.docx"
+    "*.pdf"
+    ;; C/C++
+    "*.obj"
+    "*.o"
+    "*.a"
+    "*.dylib"
+    "*.lib"
+    "*.d"
+    "*.dll"
+    "*.exe"
+    ;; Java
+    "*/.metadata*"
+    "*/.gradle/*"
+    "*.class"
+    "*.war"
+    "*.jar"
+    ;; Emacs/Vim
+    "*flymake"
+    "*/#*#"
+    ".#*"
+    "*.swp"
+    "*~"
+    "*.elc"
+    "*/.cask/*"
+    ;; Python
+    "*.pyc")
+  "List of directory/file patterns to not descend into when listing files in `find-file-in-project'.")
 
 (defvar ffip-find-options ""
   "Extra options to pass to `find' when using `find-file-in-project'.
@@ -89,19 +269,42 @@
 
 This overrides variable `ffip-project-root' when set.")
 
-(defvar ffip-limit 512
-  "Limit results to this many files.")
+(defvar ffip-ivy-last-saved nil
+  "Backup of `ivy-last'.  Requires ivy-mode.")
+
+(defvar ffip-full-paths t
+  "If nil only file names in search results are visible.")
+
+(defvar ffip-debug nil "Print debug information.")
+
+;;;###autoload
+(defun ffip-copy-without-change (p)
+  (kill-new p)
+  (message "%s => kill-ring" p))
 
-(defvar ffip-full-paths nil
-  "If non-nil, show fully project-relative paths.")
+;;;###autoload
+(defun ffip-copy-reactjs-import(p)
+  (setq p (format "import str from '%s';" p))
+  (kill-new p)
+  (message "%s => kill-ring" p))
 
+;;;###autoload
+(defun ffip-copy-org-file-link(p)
+  (setq p (format "[[file:%s]]" p))
+  (kill-new p)
+  (message "%s => kill-ring" p))
+
+;;;###autoload
+(defvar ffip-find-relative-path-callback 'ffip-copy-without-change)
+
+;;;###autoload
 (defun ffip-project-root ()
   "Return the root of the project."
   (let ((project-root (or ffip-project-root
                           (if (functionp ffip-project-root-function)
                               (funcall ffip-project-root-function)
                             (if (listp ffip-project-file)
-                                (some (apply-partially 'locate-dominating-file
+                                (cl-some (apply-partially 'locate-dominating-file
                                                        default-directory)
                                       ffip-project-file)
                               (locate-dominating-file default-directory
@@ -110,74 +313,553 @@
         (progn (message "No project was defined for the current file.")
                nil))))
 
-(defun ffip-uniqueify (file-cons)
-  "Set the car of FILE-CONS to include the directory name plus the file name."
-  (setcar file-cons
-          (concat (cadr (reverse (split-string (cdr file-cons) "/"))) "/"
-                  (car file-cons))))
+(defun ffip--read-file-text (file)
+  (read (decode-coding-string
+         (with-temp-buffer
+           (set-buffer-multibyte nil)
+           (setq buffer-file-coding-system 'binary)
+           (insert-file-contents-literally file)
+           (buffer-substring-no-properties (point-min) (point-max))) 'utf-8)))
+
+(defun ffip--find-rule-to-execute (keyword f)
+  "If F is a function, return it.
+
+If F is a list, assume each element is a function.
+Run each element with keyword as 1st parameter as KEYWORD and 2nd parameter as t.
+If the result is true, return the function."
+  (let (rlt found fn)
+    (cond
+     ((functionp f) (setq rlt f))
+
+     ((listp f)
+      (while (and f (not found))
+        (setq fn (car f))
+        (if (funcall fn keyword t)
+            (setq found t)
+          (setq f (cdr f))))
+      (setq rlt (if found fn 'identity)))
+
+     (t (setq rlt 'identity)))
+
+    rlt))
+
+;;;###autoload
+(defun ffip-save-ivy-last ()
+  "Save `ivy-last' into `ffip-ivy-last-saved'.  Requires `ivy-mode'."
+  (interactive)
+  (if (boundp 'ivy-last)
+      (setq ffip-ivy-last-saved ivy-last)
+    (message "Sorry. You need install `ivy-mode' first.")))
+
+;;;###autoload
+(defun ffip-get-project-root-directory ()
+  "Get the full path of project root directory."
+  (if ffip-project-root (file-name-as-directory ffip-project-root)
+    (ffip-project-root)))
+
+;;;###autoload
+(defun ffip-ivy-resume ()
+  "Wrapper of `ivy-resume'.  Resume the search saved at `ffip-ivy-last-saved'."
+  (interactive)
+  (let* ((ivy-last (if ffip-ivy-last-saved ffip-ivy-last-saved ivy-last))
+         (default-directory (ffip-get-project-root-directory)))
+    (if (fboundp 'ivy-resume)
+        (ivy-resume)
+      (message "Sorry. You need install `ivy-mode' first."))))
+
+;;;###autoload
+(defun ffip-filename-identity (keyword)
+  "Return identical KEYWORD."
+  keyword)
+
+;;;###autoload
+(defun ffip-filename-camelcase-to-dashes (keyword &optional check-only)
+  "Convert KEYWORD from camel cased to dash seperated.
+If CHECK-ONLY is true, only do the check."
+  (let* (rlt)
+    (cond
+     (check-only
+      (setq rlt (string-match "^[a-z0-9]+[A-Z][A-Za-z0-9]+$" keyword))
+      (if ffip-debug (message "ffip-filename-camelcase-to-dashes called. check-only keyword=%s rlt=%s" keyword rlt)))
+     (t
+      (let* ((case-fold-search nil))
+        ;; case sensitive replace
+        (setq rlt (downcase (replace-regexp-in-string "\\([a-z]\\)\\([A-Z]\\)" "\\1-\\2" keyword))))
+
+      (if (string= rlt (downcase keyword)) (setq rlt nil))
+
+      (if (and rlt ffip-debug) (message "ffip-filename-camelcase-to-dashes called. rlt=%s" rlt))))
+    rlt))
 
-(defun ffip-join-patterns ()
+;;;###autoload
+(defun ffip-filename-dashes-to-camelcase (keyword &optional check-only)
+  "Convert KEYWORD from dash seperated to camel cased.
+If CHECK-ONLY is true, only do the check."
+  (let* (rlt)
+    (cond
+     (check-only
+        (setq rlt (string-match "^[A-Za-z0-9]+\\(-[A-Za-z0-9]+\\)+$" keyword))
+        (if ffip-debug (message "ffip-filename-dashes-to-camelcase called. check-only keyword=%s rlt=%s" keyword rlt)))
+     (t
+      (setq rlt (mapconcat (lambda (s) (capitalize s)) (split-string keyword "-") ""))
+
+      (let ((first-char (substring rlt 0 1)))
+       (setq rlt (concat "[" first-char (downcase first-char) "]" (substring rlt 1))))
+      (if (and rlt ffip-debug) (message "ffip-filename-dashes-to-camelcase called. rlt=%s" rlt))))
+    rlt))
+
+(defun ffip--create-filename-pattern-for-gnufind (keyword)
+  (let* ((rlt ""))
+    (cond
+     ((not keyword)
+      (setq rlt ""))
+     ((not ffip-filename-rules)
+      (setq rlt (concat (if ffip-match-path-instead-of-filename "-iwholename" "-name")
+                        " \"*"
+                        keyword
+                        "*\"" )))
+     (t
+      (dolist (f ffip-filename-rules rlt)
+        (let (tmp fn)
+          (setq fn (ffip--find-rule-to-execute keyword f))
+          (setq tmp (funcall fn keyword))
+          (when tmp
+            (setq rlt (concat rlt (unless (string= rlt "") " -o")
+                              " "
+                              (if ffip-match-path-instead-of-filename "-iwholename" "-name")
+                              " \"*"
+                              tmp
+                              "*\"")))))
+      (unless (string= "" rlt)
+        (setq rlt (concat "\\(" rlt " \\)")))))
+
+    (if ffip-debug (message "ffip--create-filename-pattern-for-gnufind called. rlt=%s" rlt))
+    rlt))
+
+(defun ffip--win-executable-find (driver path exe)
+  (let* (rlt)
+    (if (executable-find (concat driver path exe))
+        (setq rlt (concat driver path exe)))
+    rlt))
+
+(defun ffip--executable-find (exe)
+  (let* ((rlt (if (eq system-type 'windows-nt)
+                  (or
+                   ;; cygwin
+                   (ffip--win-executable-find "c" ":\\\\cygwin64\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "d" ":\\\\cygwin64\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "e" ":\\\\cygwin64\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "c" ":\\\\cygwin\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "d" ":\\\\cygwin\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "e" ":\\\\cygwin\\\\bin\\\\" exe)
+                   ;; msys2
+                   (ffip--win-executable-find "c" ":\\\\msys64\\\\usr\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "d" ":\\\\msys64\\\\usr\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "e" ":\\\\msys64\\\\usr\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "c" ":\\\\msys32\\\\usr\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "d" ":\\\\msys32\\\\usr\\\\bin\\\\" exe)
+                   (ffip--win-executable-find "e" ":\\\\msys32\\\\usr\\\\bin\\\\" exe))
+                ;; *nix
+                (executable-find exe))))
+    (unless rlt
+      ;; well, `executable-find' failed
+      (setq rlt exe))
+    rlt))
+
+(defun ffip--join-patterns (patterns)
   "Turn `ffip-patterns' into a string that `find' can use."
-  (mapconcat (lambda (pat) (format "-name \"%s\"" pat))
-             ffip-patterns " -or "))
+  (if ffip-patterns
+      (format "\\( %s \\)" (mapconcat (lambda (pat) (format "-iwholename \"%s\"" pat))
+                         patterns " -or "))
+    ""))
 
-(defun ffip-prune-patterns ()
+(defun ffip--prune-patterns ()
   "Turn `ffip-prune-patterns' into a string that `find' can use."
-  (mapconcat (lambda (pat) (format "-name \"%s\"" pat))
+  (mapconcat (lambda (pat) (format "-iwholename \"%s\"" pat))
              ffip-prune-patterns " -or "))
 
+;;;###autoload
+(defun ffip-completing-read (prompt collection action)
+  (cond
+   ((= 1 (length collection))
+    ;; open file directly
+    (funcall action (car collection)))
+   ;; if user prefer `ido-mode' or `ivy-read' is not defined,
+   ;; we use `ido-completing-read'.
+   ((or ffip-prefer-ido-mode (not (fboundp 'ivy-read)))
+    ;; friendly UI for ido
+    (let* ((list-of-pair (consp (car collection)))
+           (ido-collection (if list-of-pair
+                               (mapcar 'car collection)
+                             collection))
+           (ido-selected (ido-completing-read prompt ido-collection)))
+      (if ido-selected
+          (funcall action
+                   (if list-of-pair
+                       (cdar (delq nil
+                                   (mapcar (lambda (x)
+                                             (and (string= (car x)
+                                                           ido-selected)
+                                                  x))
+                                           collection)))
+                     ido-selected)))))
+   (t
+    (ivy-read prompt collection
+              :action action))))
 
-(defun ffip-project-files ()
+;;;###autoload
+(defun ffip-project-search (keyword find-directory)
   "Return an alist of all filenames in the project and their path.
 
 Files with duplicate filenames are suffixed with the name of the
-directory they are found in so that they are unique."
-  (let ((file-alist nil)
-        (root (expand-file-name (or ffip-project-root (ffip-project-root)
-                                    (error "No project root found")))))
-    (mapcar (lambda (file)
-              (if ffip-full-paths
-                  (cons (substring (expand-file-name file) (length root))
-                        (expand-file-name file))
-                (let ((file-cons (cons (file-name-nondirectory file)
-                                       (expand-file-name file))))
-                  (when (assoc (car file-cons) file-alist)
-                    (ffip-uniqueify (assoc (car file-cons) file-alist))
-                    (ffip-uniqueify file-cons))
-                  (add-to-list 'file-alist file-cons)
-                  file-cons)))
-            (split-string (shell-command-to-string
-                           (format "find %s -type d -a \\( %s \\) -prune -o -type f \\( %s \\) -print %s | head -n %s"
-                                   root (ffip-prune-patterns) (ffip-join-patterns)
-                                   ffip-find-options ffip-limit))))))
+directory they are found in so that they are unique.
+
+If KEYWORD is string, it's the file name or file path to find file.
+If KEYWORD is list, it's the list of file names."
+  (let* (rlt
+         (root (ffip-get-project-root-directory))
+         (default-directory (file-name-as-directory root))
+         (cmd (format "%s . \\( %s \\) -prune -o -type %s %s %s %s -print"
+                      (if ffip-find-executable ffip-find-executable (ffip--executable-find "find"))
+                      (ffip--prune-patterns)
+                      (if find-directory "d" "f")
+                      (ffip--join-patterns ffip-patterns)
+                      ;; When finding directory, the keyword is like:
+                      ;; "proj/hello/world"
+                      (cond
+                       ((listp keyword)
+                        ;; already got enough files names to handle
+                        (let* ((ffip-filename-rules nil))
+                          (ffip--create-filename-pattern-for-gnufind keyword)))
+                       (t
+                        (if find-directory (format "-iwholename \"*%s\"" keyword)
+                          (ffip--create-filename-pattern-for-gnufind keyword))))
+                      ffip-find-options)))
+
+    (if ffip-debug (message "run cmd at %s: %s" default-directory cmd))
+    (setq rlt
+          (mapcar (lambda (file)
+                    (if ffip-full-paths
+                        (cons (replace-regexp-in-string "^\./" "" file)
+                              (expand-file-name file))
+                      (cons (file-name-nondirectory file)
+                            (expand-file-name file))))
+                  ;; #15 improving handling of directories containing space
+                  (split-string (shell-command-to-string cmd) "[\r\n]+" t)))
+    rlt))
+
+(defun ffip--forward-line (lnum)
+  "Forward LNUM lines"
+  (if ffip-debug (message "ffip--forward-line called => %s" lnum))
+  (when (and lnum (> lnum 0))
+    (goto-char (point-min))
+    (forward-line (1- lnum))))
+
+;;;###autoload
+(defun ffip-find-files (keyword open-another-window &optional find-directory fn)
+  "The API to find files."
+  (let* (project-files
+         lnum
+         file
+         root)
+
+    ;; extract line num if exists
+    (when (and keyword (stringp keyword)
+               (string-match "^\\(.*\\):\\([0-9]+\\):?$" keyword))
+      (setq lnum (string-to-number (match-string 2 keyword)))
+      (setq keyword (match-string 1 keyword)))
+
+    (setq project-files (ffip-project-search keyword find-directory))
+    (cond
+     ((> (length project-files) 0)
+      (setq root (file-name-nondirectory (directory-file-name (ffip-get-project-root-directory))))
+      (ffip-completing-read
+       (format "Find in %s/: " root)
+       project-files
+       `(lambda (file)
+          ;; only one item in project files
+          (if (listp file) (setq file (cdr file)))
+          (if ,find-directory
+              (if ,open-another-window
+                  (dired-other-window file)
+                (switch-to-buffer (dired file)))
+            ;; open file
+            (if ,open-another-window
+                (find-file-other-window file)
+              (find-file file))
+            ;; goto line if needed
+            (ffip--forward-line ,lnum)
+            (if ,fn (funcall ,fn file))))))
+     (t
+      (message "Nothing found!")))))
+
+(defun ffip--prepare-root-data-for-project-file (root)
+  (cons 'ffip-project-root root))
 
 ;;;###autoload
-(defun find-file-in-project ()
+(defun ffip-create-project-file ()
+  "Create or Append .dir-locals.el to set up per directory.
+You can move .dir-locals.el to root directory.
+See (info \"(Emacs) Directory Variables\") for details."
+  (interactive)
+  (let* ((root (read-directory-name "Project root directory?" default-directory))
+         (file (if (and root (file-exists-p root))
+                   (concat (file-name-as-directory root) ".dir-locals.el"))))
+    (when file
+      (with-temp-buffer
+        (let ((print-level nil)  (print-length nil) sexp (rlt '(a)))
+          (cond
+           ;; modify existing .dir-locals.el
+           ((file-exists-p file)
+            (let (sub-sexp new-sub-sexp)
+              (setq sexp (ffip--read-file-text file))
+              ;; valid .dir-locals.el
+              (when sexp
+                ;; the list for nil
+                (setq sub-sexp (assoc nil sexp))
+                (cond
+                 ;; `(nil (prop1 . val1) (prop2 . val2))' exists
+                 (sub-sexp
+                  ;; remove (ffip-project-root . "/path/file")
+                  (if (assoc 'ffip-project-root sub-sexp)
+                      (setq new-sub-sexp (delete (assoc 'ffip-project-root sub-sexp) sub-sexp))
+                    (setq new-sub-sexp sub-sexp))
+                  (add-to-list 'new-sub-sexp (ffip--prepare-root-data-for-project-file root) t)
+                  ;; update sexp
+                  (setq sexp (delete sub-sexp sexp))
+                  (add-to-list 'sexp new-sub-sexp))
+                 (t
+                  ;; add `(nil (ffip-project-root . "path/file"))'
+                  (add-to-list 'sexp (list nil (ffip--prepare-root-data-for-project-file root))))))
+              ))
+           (t
+            ;; a new .dir-locals.el
+            (setq sexp (list (list nil (ffip--prepare-root-data-for-project-file root))))))
+          (when sexp
+            (insert (format "%S" sexp))
+            (write-file file)
+            (message "%s created." file)))))))
+
+;;;###autoload
+(defun ffip-current-full-filename-match-pattern-p (regex)
+  "Is current full file name (including directory) match the REGEX?"
+  (let* ((dir (if (buffer-file-name) (buffer-file-name) "")))
+    (string-match-p regex dir)))
+
+;;;###autoload
+(defun find-file-in-project (&optional open-another-window)
   "Prompt with a completing list of all files in the project to find one.
 
+If OPEN-ANOTHER-WINDOW is not nil, the file will be opened in new window.
+
 The project's scope is defined as the first directory containing
-an `.emacs-project' file.  You can override this by locally
-setting the variable `ffip-project-root'."
-  (interactive)
-  (let* ((project-files (ffip-project-files))
-         (files (mapcar 'car project-files))
-         (file (if (and (boundp 'ido-mode) ido-mode)
-                   (ido-completing-read "Find file in project: " files)
-                 (completing-read "Find file in project: " files))))
-    (find-file (cdr (assoc file project-files)))))
+a `ffip-project-file' whose value is \".git\" by default.
+
+You can override this by setting the variable `ffip-project-root'."
+
+  (interactive "P")
+  (ffip-find-files nil open-another-window))
+
+;;;###autoload
+(defun find-file-in-current-directory (&optional open-another-window)
+  "Like `find-file-in-project'.  But search only in current directory."
+  (interactive "P")
+  (let* ((ffip-project-root default-directory))
+    (find-file-in-project open-another-window)))
+
+;;;###autoload
+(defun find-file-in-project-by-selected (&optional open-another-window)
+  "Similar to `find-file-in-project'.
+But use string from selected region to search files in the project.
+If no region is selected, you need provide keyword.
+
+Keyword could be ANY part of the file's full path and support wildcard.
+For example, to find /home/john/proj1/test.js, below keywords are valid:
+- test.js
+- roj1/tes
+- john*test
+
+If keyword contains line number like \"hello.txt:32\" or \"hello.txt:32:\",
+we will move to that line in opened file.
+
+If OPEN-ANOTHER-WINDOW is not nil, the file will be opened in new window."
+  (interactive "P")
+  (let* ((keyword (if (region-active-p)
+                      (buffer-substring-no-properties (region-beginning) (region-end))
+                    (read-string "Enter keyword (or press ENTER):"))))
+    (ffip-find-files keyword open-another-window)))
+
+;;;###autoload
+(defun find-file-in-current-directory-by-selected (&optional open-another-window)
+  "Like `find-file-in-project-by-selected'.  But search only in current directory."
+  (interactive "P")
+  (let* ((ffip-project-root default-directory))
+    (find-file-in-project-by-selected open-another-window)))
+
+;;;###autoload
+(defun find-relative-path(&optional find-directory)
+  "Find file/directory and copy its relative path into `kill-ring'.
+Optional prefix FIND-DIRECTORY copy the directory path; file path by default.
+
+You can set `ffip-find-relative-path-callback' to format the string before copying,
+  (setq ffip-find-relative-path-callback 'ffip-copy-reactjs-import)
+  (setq ffip-find-relative-path-callback 'ffip-copy-org-file-link)"
+  (interactive "P")
+  (let* ((keyword (if (region-active-p)
+                      (buffer-substring-no-properties (region-beginning) (region-end))
+                    (read-string "Enter keyword (or press ENTER):")))
+         (project-files (ffip-project-search keyword find-directory))
+         root)
+    (cond
+     ((> (length project-files) 0)
+      (setq root (file-name-nondirectory (directory-file-name (ffip-get-project-root-directory))))
+      (ffip-completing-read
+       (format "Find in %s/: " root)
+       project-files
+       `(lambda (p)
+          ;; only one item in project files
+          (if (listp p) (setq p (cdr p)))
+          (if ,find-directory
+              (setq p (file-name-as-directory p)))
+          (setq p (file-relative-name p (file-name-directory buffer-file-name)))
+          (funcall ffip-find-relative-path-callback p))))
+     (t
+      (message "Nothing found!")))))
+
+;;;###autoload
+(defun find-directory-in-project-by-selected (&optional open-another-window)
+  "Similar to `find-file-in-project-by-selected'.
+Use string from selected region to find directory in the project.
+If no region is selected, you need provide keyword.
+
+Keyword could be directory's base-name only or parent-directoy+base-name
+For example, to find /home/john/proj1/test, below keywords are valid:
+- test
+- roj1/test
+- john*test
+
+If OPEN-ANOTHER-WINDOW is not nil, the file will be opened in new window."
+  (interactive "P")
+  (let* ((keyword (if (region-active-p)
+                      (buffer-substring-no-properties (region-beginning) (region-end))
+                    (read-string "Enter keyword (or press ENTER):"))))
+    (ffip-find-files keyword open-another-window t)))
 
 ;;;###autoload
 (defalias 'ffip 'find-file-in-project)
 
-;; safe locals
+
+;;;###autoload
+(defun ffip-diff-quit ()
+  (interactive)
+  ;; kill buffer instead of bury it
+  (quit-window t))
+
 ;;;###autoload
+(defun ffip-diff-find-file (&optional open-another-window)
+  "File file(s) in current hunk."
+  (interactive "P")
+  (let* ((files (mapcar 'file-name-nondirectory (diff-hunk-file-names)))
+        (alnum 0)
+        (blnum 0))
+
+    (save-excursion
+      (diff-beginning-of-hunk t)
+      (when (looking-at "\\(?:\\*\\{15\\}.*\n\\)?[-@* ]*\\([0-9,]+\\)\\([ acd+]+\\([0-9,]+\\)\\)?")
+        (setq alnum (string-to-number (match-string 1)))
+        (setq blnum (string-to-number (match-string 3)))))
+
+    (if (and (> (length files) 1)
+             (string= (nth 0 files) (nth 1 files)))
+        (ffip-find-files (nth 0 files)
+                         open-another-window
+                         nil
+                         (lambda (opened-file)
+                           ;; use line number in new file since there is only one file name candidate
+                           (ffip--forward-line blnum)))
+      (run-hook-with-args 'ffip-diff-find-file-before-hook)
+      (ffip-find-files files
+                       open-another-window
+                       nil
+                       (lambda (opened-file)
+                         (cond
+                          ((string= (file-name-nondirectory opened-file) (nth 0 files))
+                           (ffip--forward-line alnum))
+                          (t
+                           (ffip--forward-line blnum))))))))
+
+(defvar ffip-diff-mode-map
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map diff-mode-map)
+    ;; EVIL friendly. ffip-diff-mode is read-only
+    (define-key map "K" 'diff-hunk-prev)
+    (define-key map "J" 'diff-hunk-next)
+    (define-key map "P" 'diff-file-prev)
+    (define-key map "N" 'diff-file-next)
+    (define-key map [remap diff-goto-source] 'ffip-diff-find-file)
+    map)
+  "Mode map based on `diff-mode-map'")
+
+(define-derived-mode ffip-diff-mode diff-mode "ffip"
+  "Show diff/patch."
+  (setq buffer-read-only t)
+  (setq truncate-lines t)
+  (use-local-map ffip-diff-mode-map))
+
+(defun ffip-show-content-in-diff-mode (content)
+  "Insert content into *ffip-diff* buffer."
+  (cond
+   ((and content (not (string= content "")))
+    (let (rlt-buf)
+      (if (get-buffer "*ffip-diff*")
+          (kill-buffer "*ffip-diff*"))
+      (setq rlt-buf (get-buffer-create "*ffip-diff*"))
+      (save-current-buffer
+        (switch-to-buffer-other-window rlt-buf)
+        (set-buffer rlt-buf)
+        (erase-buffer)
+        (insert content)
+        (ffip-diff-mode)
+        (goto-char (point-min)))))
+   (t
+    (message "Output is empty!"))))
+
+;;;###autoload
+(defun ffip-show-diff (&optional num)
+  "Show the diff output by excuting selected `ffip-diff-backends'.
+NUM is the index selected backend from `ffip-diff-backends'.
+NUM is zero based.  Its default value is zero."
+  (interactive "P")
+  (cond
+   ((or (not num) (< num 0))
+    (setq num 0))
+   ((> num (length ffip-diff-backends))
+    (setq num (1- (length ffip-diff-backends)))))
+
+  (let* ((backend (nth num ffip-diff-backends))
+         rlt-buf)
+
+    (if backend
+      (cond
+       ;; shell command
+       ((stringp backend)
+        (ffip-show-content-in-diff-mode (shell-command-to-string backend)))
+       ;; command
+       ((functionp backend)
+        (ffip-show-content-in-diff-mode (funcall backend)))
+       ;; lisp exipression
+       ((consp backend)
+        (ffip-show-content-in-diff-mode (funcall `(lambda () ,backend))))))))
+
+;; safe locals
 (progn
+  (put 'ffip-diff-backends 'safe-local-variable 'listp)
   (put 'ffip-patterns 'safe-local-variable 'listp)
-  (put 'ffip-find-options 'safe-local-variable 'stringp)
+  (put 'ffip-prune-patterns 'safe-local-variable 'listp)
+  (put 'ffip-filename-rules 'safe-local-variable 'listp)
+  (put 'ffip-match-path-instead-of-filename 'safe-local-variable 'booleanp)
   (put 'ffip-project-file 'safe-local-variable 'stringp)
-  (put 'ffip-project-root 'safe-local-variable 'stringp)
-  (put 'ffip-project-root-function 'safe-local-variable 'functionp)
-  (put 'ffip-limit 'safe-local-variable 'integerp))
+  (put 'ffip-project-root 'safe-local-variable 'stringp))
 
 (provide 'find-file-in-project)
 ;;; find-file-in-project.el ends here
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0.signed
@@ -0,0 +1,1 @@
+Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org> (trust undefined) created at 2016-04-26T05:05:02-0400 using DSA
\ No newline at end of file
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/.dir-locals.el
@@ -0,0 +1,5 @@
+;;; Directory Local Variables
+;;; For more information see (info "(emacs) Directory Variables")
+
+((emacs-lisp-mode
+  (indent-tabs-mode . nil)))
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/.travis.yml
@@ -0,0 +1,12 @@
+language: emacs-lisp
+env:
+  matrix:
+    - EMACS=emacs24
+
+before_install:
+  - sudo add-apt-repository -y ppa:cassou/emacs
+  - sudo apt-get update -qq
+  - sudo apt-get install -qq $EMACS
+
+script:
+  - make test
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/ChangeLog
@@ -0,0 +1,8 @@
+2016-04-25  Oleh Krehel	 <ohwoeowho@gmail.com>
+
+	Merge commit 'db005182ad0fd05c07e8e5c085abe6c750e6c578' from ivy
+
+2016-04-25  Oleh Krehel	 <ohwoeowho@gmail.com>
+
+	Rename swiper -> ivy
+
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/Makefile
@@ -0,0 +1,16 @@
+emacs ?= emacs
+
+LOAD = -l colir.el -l ivy.el -l swiper.el -l counsel.el
+
+.PHONY: all compile clean
+
+all: test
+
+test:
+	$(emacs) -batch $(LOAD) -l ivy-test.el -f ert-run-tests-batch-and-exit
+
+compile:
+	$(emacs) -batch --eval "(progn (add-to-list 'load-path default-directory) (mapc #'byte-compile-file '(\"ivy.el\" \"swiper.el\" \"counsel.el\")))"
+
+clean:
+	rm -f *.elc
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/README.md
@@ -0,0 +1,82 @@
+[![Build Status](https://travis-ci.org/abo-abo/swiper.svg?branch=master)](https://travis-ci.org/abo-abo/swiper) [![MELPA](https://melpa.org/packages/swiper-badge.svg)](https://melpa.org/#/swiper)
+
+## Swiper
+
+Package for GNU Emacs that shows an overview during regex searching.
+
+![swiper.png](http://oremacs.com/download/swiper.png)
+
+The package uses the `ivy` back end for the overview, see also
+[swiper-helm](https://github.com/abo-abo/swiper-helm).
+
+## Screenshots
+
+![ivy-swiper-1.png](http://oremacs.com/download/ivy-swiper-1.png)
+
+There's also a ten minute [video demo](https://www.youtube.com/watch?v=VvnJQpTFVDc).
+
+## Ivy
+
+Ivy is a generic completion mechanism for Emacs. While it operates
+similarly to other completion schemes such as `icomplete-mode`, Ivy
+aims to be more efficient, smaller, simpler, and smoother to use yet
+highly customizable.
+
+To try Ivy, just call <kbd>M-x</kbd> `ivy-mode`. This will enable
+generic Ivy completion, including specific completion for file and
+buffer names.
+
+## Installation
+
+Install the `swiper` package from MELPA / GNU ELPA.
+
+## Documentation
+
+### Manual
+The manual is available as [HTML](http://oremacs.com/swiper/).
+
+After installing from MELPA, the manual is also available through the `(ivy)` Info node.
+
+The source file for the Info page is
+[here](https://github.com/abo-abo/swiper/blob/master/doc/ivy.org).
+
+### Wiki
+Ivy and Swiper wiki is here: [the wiki](https://github.com/abo-abo/swiper/wiki).
+
+### Small config example
+```elisp
+(ivy-mode 1)
+(setq ivy-use-virtual-buffers t)
+(global-set-key "\C-s" 'swiper)
+(global-set-key (kbd "C-c C-r") 'ivy-resume)
+(global-set-key (kbd "<f6>") 'ivy-resume)
+(global-set-key (kbd "M-x") 'counsel-M-x)
+(global-set-key (kbd "C-x C-f") 'counsel-find-file)
+(global-set-key (kbd "<f1> f") 'counsel-describe-function)
+(global-set-key (kbd "<f1> v") 'counsel-describe-variable)
+(global-set-key (kbd "<f1> l") 'counsel-load-library)
+(global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
+(global-set-key (kbd "<f2> u") 'counsel-unicode-char)
+(global-set-key (kbd "C-c g") 'counsel-git)
+(global-set-key (kbd "C-c j") 'counsel-git-grep)
+(global-set-key (kbd "C-c k") 'counsel-ag)
+(global-set-key (kbd "C-x l") 'counsel-locate)
+(global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
+(define-key read-expression-map (kbd "C-r") 'counsel-expression-history)
+```
+
+## Contributing
+
+### Copyright Assignment
+
+Swiper is subject to the same [copyright assignment](http://www.gnu.org/prep/maintain/html_node/Copyright-Papers.html) policy as Emacs itself, org-mode, CEDET and other packages in [GNU ELPA](http://elpa.gnu.org/packages/). Any [legally significant](http://www.gnu.org/prep/maintain/html_node/Legally-Significant.html#Legally-Significant) contributions can only be accepted after the author has completed their paperwork. Please see [the request form](http://git.savannah.gnu.org/cgit/gnulib.git/tree/doc/Copyright/request-assign.future) if you want to proceed.
+
+The copyright assignment isn't a big deal, it just says that the copyright for your submitted changes to Emacs belongs to the FSF. This assignment works for all projects related to Emacs. To obtain it, you need to send one email, then send one letter (if you live in the US, it's digital), and wait for some time (in my case, I had to wait for one month).
+
+### Style
+
+The basic code style guide is to use `(setq indent-tabs-mode nil)`. It is provided for you in [.dir-locals.el](https://github.com/abo-abo/swiper/blob/master/.dir-locals.el), please obey it.
+
+Before submitting the change, run `make compile` and `make test` to make sure that it doesn't introduce new compile warnings or test failures. Also run <kbd>M-x</kbd> `checkdoc` to see that your changes obey the documentation guidelines.
+
+Use your own judgment for the commit messages, I recommend a verbose style using `magit-commit-add-log`.
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/colir.el
@@ -0,0 +1,102 @@
+;;; colir.el --- Color blending library -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel <ohwoeowho@gmail.com>
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package solves the problem of adding a face with a background
+;; to text which may already have a background.  In all conflicting
+;; areas, instead of choosing either the original or the new
+;; background face, their blended sum is used.
+;;
+;; The blend mode functions are taken from http://en.wikipedia.org/wiki/Blend_modes.
+
+;;; Code:
+
+(require 'color)
+
+(defcustom colir-compose-method 'colir-compose-alpha
+  "Select a method to compose two color channels."
+  :type '(choice
+          (const colir-compose-alpha)
+          (const colir-compose-overlay)
+          (const colir-compose-soft-light))
+  :group 'ivy)
+
+(defun colir-compose-soft-light (a b)
+  "Compose A and B channels."
+  (if (< b 0.5)
+      (+ (* 2 a b) (* a a (- 1 b b)))
+    (+ (* 2 a (- 1 b)) (* (sqrt a) (- (* 2 b) 1)))))
+
+(defun colir-compose-overlay (a b)
+  "Compose A and B channels."
+  (if (< a 0.5)
+      (* 2 a b)
+    (- 1 (* 2 (- 1 a) (- 1 b)))))
+
+(defun colir-compose-alpha (a b &optional alpha gamma)
+  "Compose A and B channels."
+  (setq alpha (or alpha 0.5))
+  (setq gamma (or gamma 2.2))
+  (+ (* (expt a gamma) alpha) (* (expt b gamma) (- 1 alpha))))
+
+(defun colir-blend (c1 c2)
+  "Blend the two colors C1 and C2 using `colir-compose-method'.
+C1 and C2 are triples of floats in [0.0 1.0] range."
+  (apply #'color-rgb-to-hex
+         (cl-mapcar
+          (if (eq (frame-parameter nil 'background-mode) 'dark)
+              ;; this method works nicely for dark themes
+              'colir-compose-soft-light
+            colir-compose-method)
+          c1 c2)))
+
+(defun colir-blend-face-background (start end face &optional object)
+  "Append to the face property of the text from START to END the face FACE.
+When the text already has a face with a non-plain background,
+blend it with the background of FACE.
+Optional argument OBJECT is the string or buffer containing the text.
+See also `font-lock-append-text-property'."
+  (let (next prev)
+    (while (/= start end)
+      (setq next (next-single-property-change start 'face object end))
+      (setq prev (get-text-property start 'face object))
+      (when (listp prev)
+        (setq prev (cl-find-if #'atom prev)))
+      (if (facep prev)
+          (let ((background-prev (face-background prev)))
+            (progn
+              (put-text-property
+               start next 'face
+               (if background-prev
+                   (cons `(background-color
+                           . ,(colir-blend
+                               (color-name-to-rgb background-prev)
+                               (color-name-to-rgb (face-background face nil t))))
+                         prev)
+                 (list face prev))
+               object)))
+        (put-text-property start next 'face face object))
+      (setq start next))))
+
+(provide 'colir)
+
+;;; colir.el ends here
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/counsel.el
@@ -0,0 +1,2131 @@
+;;; counsel.el --- Various completion functions using Ivy -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel <ohwoeowho@gmail.com>
+;; URL: https://github.com/abo-abo/swiper
+;; Version: 0.8.0
+;; Package-Requires: ((emacs "24.1") (swiper "0.8.0"))
+;; Keywords: completion, matching
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; Just call one of the interactive functions in this file to complete
+;; the corresponding thing using `ivy'.
+;;
+;; Currently available: Elisp symbols, Clojure symbols, Git files.
+
+;;; Code:
+
+(require 'swiper)
+(require 'etags)
+(require 'esh-util)
+
+;;* Utility
+(defun counsel-more-chars (n)
+  "Return two fake candidates prompting for at least N input."
+  (list ""
+        (format "%d chars more" (- n (length ivy-text)))))
+
+(defun counsel-unquote-regex-parens (str)
+  (let ((start 0)
+        ms)
+    (while (setq start (string-match "\\\\)\\|\\\\(\\|[()]" str start))
+      (setq ms (match-string-no-properties 0 str))
+      (cond ((equal ms "\\(")
+             (setq str (replace-match "(" nil t str))
+             (setq start (+ start 1)))
+            ((equal ms "\\)")
+             (setq str (replace-match ")" nil t str))
+             (setq start (+ start 1)))
+            ((equal ms "(")
+             (setq str (replace-match "\\(" nil t str))
+             (setq start (+ start 2)))
+            ((equal ms ")")
+             (setq str (replace-match "\\)" nil t str))
+             (setq start (+ start 2)))
+            (t
+             (error "unexpected"))))
+    str))
+
+(defun counsel-directory-parent (dir)
+  "Return the directory parent of directory DIR."
+  (concat (file-name-nondirectory
+           (directory-file-name dir)) "/"))
+
+(defun counsel-string-compose (prefix str)
+  "Make PREFIX the display prefix of STR though text properties."
+  (let ((str (copy-sequence str)))
+    (put-text-property
+     0 1 'display
+     (concat prefix (substring str 0 1))
+     str)
+    str))
+
+;;* Async Utility
+(defvar counsel--async-time nil
+  "Store the time when a new process was started.
+Or the time of the last minibuffer update.")
+
+(defvar counsel--async-start nil
+  "Store the time when a new process was started.
+Or the time of the last minibuffer update.")
+
+(defvar counsel--async-duration nil
+  "Store the time in seconds between starting a process and
+  receiving all candidates.")
+
+(defvar counsel--async-exit-code-plist nil
+  "Associates exit codes with reasons.")
+
+(defun counsel-set-async-exit-code (cmd number str)
+  "For CMD, associate NUMBER exit code with STR."
+  (let ((plist (plist-get counsel--async-exit-code-plist cmd)))
+    (setq counsel--async-exit-code-plist
+          (plist-put
+           counsel--async-exit-code-plist
+           cmd
+           (plist-put plist number str)))))
+
+(defvar counsel-async-split-string-re "\n"
+  "Store the regexp for splitting shell command output.")
+
+(defun counsel--async-command (cmd &optional process-sentinel process-filter)
+  (let* ((counsel--process " *counsel*")
+         (proc (get-process counsel--process))
+         (buff (get-buffer counsel--process)))
+    (when proc
+      (delete-process proc))
+    (when buff
+      (kill-buffer buff))
+    (setq proc (start-process-shell-command
+                counsel--process
+                counsel--process
+                cmd))
+    (setq counsel--async-start
+          (setq counsel--async-time (current-time)))
+    (set-process-sentinel proc (or process-sentinel #'counsel--async-sentinel))
+    (set-process-filter proc (or process-filter #'counsel--async-filter))))
+
+(defvar counsel-grep-last-line nil)
+
+(defun counsel--async-sentinel (process event)
+  (let ((cands
+         (cond ((string= event "finished\n")
+                (with-current-buffer (process-buffer process)
+                  (split-string
+                   (buffer-string)
+                   counsel-async-split-string-re
+                   t)))
+               ((string-match "exited abnormally with code \\([0-9]+\\)\n" event)
+                (let* ((exit-code-plist (plist-get counsel--async-exit-code-plist
+                                                   (ivy-state-caller ivy-last)))
+                       (exit-num (read (match-string 1 event)))
+                       (exit-code (plist-get exit-code-plist exit-num)))
+                  (list
+                   (or exit-code
+                       (format "error code %d" exit-num))))))))
+    (cond ((string= event "finished\n")
+           (ivy--set-candidates
+            (ivy--sort-maybe
+             cands))
+           (setq counsel-grep-last-line nil)
+           (when counsel--async-start
+             (setq counsel--async-duration
+                   (time-to-seconds (time-since counsel--async-start))))
+           (let ((re (funcall ivy--regex-function ivy-text)))
+             (unless (stringp re)
+               (setq re (caar re)))
+             (if (null ivy--old-cands)
+                 (unless (setq ivy--index (ivy--preselect-index
+                                           (ivy-state-preselect ivy-last)
+                                           ivy--all-candidates))
+                   (ivy--recompute-index
+                    ivy-text re ivy--all-candidates))
+               (ivy--recompute-index
+                ivy-text re ivy--all-candidates)))
+           (setq ivy--old-cands ivy--all-candidates)
+           (if (null ivy--all-candidates)
+               (ivy--insert-minibuffer "")
+             (ivy--exhibit)))
+          ((string-match "exited abnormally with code \\([0-9]+\\)\n" event)
+           (setq ivy--all-candidates cands)
+           (setq ivy--old-cands ivy--all-candidates)
+           (ivy--exhibit)))))
+
+(defun counsel--async-filter (process str)
+  "Receive from PROCESS the output STR.
+Update the minibuffer with the amount of lines collected every
+0.5 seconds since the last update."
+  (with-current-buffer (process-buffer process)
+    (insert str))
+  (let (size)
+    (when (time-less-p
+           ;; 0.5s
+           '(0 0 500000 0)
+           (time-since counsel--async-time))
+      (with-current-buffer (process-buffer process)
+        (goto-char (point-min))
+        (setq size (- (buffer-size) (forward-line (buffer-size))))
+        (ivy--set-candidates
+         (split-string
+          (buffer-string)
+          counsel-async-split-string-re
+          t)))
+      (let ((ivy--prompt (format
+                          (concat "%d++ " (ivy-state-prompt ivy-last))
+                          size)))
+        (ivy--insert-minibuffer
+         (ivy--format ivy--all-candidates)))
+      (setq counsel--async-time (current-time)))))
+
+(defcustom counsel-prompt-function 'counsel-prompt-function-default
+  "A function to return a full prompt string from a basic prompt string."
+  :type
+  '(choice
+    (const :tag "Plain" counsel-prompt-function-default)
+    (const :tag "Directory" counsel-prompt-function-dir)
+    (function :tag "Custom"))
+  :group 'ivy)
+
+(defun counsel-prompt-function-default (prompt)
+  "Return PROMPT appended with a semicolon."
+  (format "%s: " prompt))
+
+(defun counsel-delete-process ()
+  (let ((process (get-process " *counsel*")))
+    (when process
+      (delete-process process))))
+
+;;* Completion at point
+;;** `counsel-el'
+;;;###autoload
+(defun counsel-el ()
+  "Elisp completion at point."
+  (interactive)
+  (let* ((bnd (unless (and (looking-at ")")
+                           (eq (char-before) ?\())
+                (bounds-of-thing-at-point
+                 'symbol)))
+         (str (if bnd
+                  (buffer-substring-no-properties
+                   (car bnd)
+                   (cdr bnd))
+                ""))
+         (ivy-height 7)
+         (funp (eq (char-before (car bnd)) ?\())
+         symbol-names)
+    (if bnd
+        (progn
+          (setq ivy-completion-beg
+                (move-marker (make-marker) (car bnd)))
+          (setq ivy-completion-end
+                (move-marker (make-marker) (cdr bnd))))
+      (setq ivy-completion-beg nil)
+      (setq ivy-completion-end nil))
+    (if (string= str "")
+        (mapatoms
+         (lambda (x)
+           (when (symbolp x)
+             (push (symbol-name x) symbol-names))))
+      (setq symbol-names
+            (all-completions str obarray
+                             (and funp
+                                  (lambda (x)
+                                    (or (functionp x)
+                                        (macrop x)
+                                        (special-form-p x)))))))
+    (ivy-read "Symbol name: " symbol-names
+              :predicate (and funp #'functionp)
+              :initial-input str
+              :action #'ivy-completion-in-region-action)))
+
+;;** `counsel-cl'
+(declare-function slime-symbol-start-pos "ext:slime")
+(declare-function slime-symbol-end-pos "ext:slime")
+(declare-function slime-contextual-completions "ext:slime-c-p-c")
+
+;;;###autoload
+(defun counsel-cl ()
+  "Common Lisp completion at point."
+  (interactive)
+  (setq ivy-completion-beg (slime-symbol-start-pos))
+  (setq ivy-completion-end (slime-symbol-end-pos))
+  (ivy-read "Symbol name: "
+            (car (slime-contextual-completions
+                  ivy-completion-beg
+                  ivy-completion-end))
+            :action #'ivy-completion-in-region-action))
+
+;;** `counsel-jedi'
+(declare-function deferred:sync! "ext:deferred")
+(declare-function jedi:complete-request "ext:jedi-core")
+(declare-function jedi:ac-direct-matches "ext:jedi")
+
+(defun counsel-jedi ()
+  "Python completion at point."
+  (interactive)
+  (let ((bnd (bounds-of-thing-at-point 'symbol)))
+    (if bnd
+        (progn
+          (setq ivy-completion-beg (car bnd))
+          (setq ivy-completion-end (cdr bnd)))
+      (setq ivy-completion-beg nil)
+      (setq ivy-completion-end nil)))
+  (deferred:sync!
+      (jedi:complete-request))
+  (ivy-read "Symbol name: " (jedi:ac-direct-matches)
+            :action #'counsel--py-action))
+
+(defun counsel--py-action (symbol)
+  "Insert SYMBOL, erasing the previous one."
+  (when (stringp symbol)
+    (with-ivy-window
+      (when ivy-completion-beg
+        (delete-region
+         ivy-completion-beg
+         ivy-completion-end))
+      (setq ivy-completion-beg
+            (move-marker (make-marker) (point)))
+      (insert symbol)
+      (setq ivy-completion-end
+            (move-marker (make-marker) (point)))
+      (when (equal (get-text-property 0 'symbol symbol) "f")
+        (insert "()")
+        (setq ivy-completion-end
+              (move-marker (make-marker) (point)))
+        (backward-char 1)))))
+
+;;** `counsel-clj'
+(declare-function cider-sync-request:complete "ext:cider-client")
+(defun counsel--generic (completion-fn)
+  "Complete thing at point with COMPLETION-FN."
+  (let* ((bnd (or (bounds-of-thing-at-point 'symbol)
+                  (cons (point) (point))))
+         (str (buffer-substring-no-properties
+               (car bnd) (cdr bnd)))
+         (candidates (funcall completion-fn str))
+         (ivy-height 7)
+         (res (ivy-read (format "pattern (%s): " str)
+                        candidates)))
+    (when (stringp res)
+      (when bnd
+        (delete-region (car bnd) (cdr bnd)))
+      (insert res))))
+
+;;;###autoload
+(defun counsel-clj ()
+  "Clojure completion at point."
+  (interactive)
+  (counsel--generic
+   (lambda (str)
+     (mapcar
+      #'cl-caddr
+      (cider-sync-request:complete str ":same")))))
+
+;;** `counsel-unicode-char'
+(defvar counsel-unicode-char-history nil
+  "History for `counsel-unicode-char'.")
+
+;;;###autoload
+(defun counsel-unicode-char ()
+  "Insert a Unicode character at point."
+  (interactive)
+  (let ((minibuffer-allow-text-properties t))
+    (setq ivy-completion-beg (point))
+    (setq ivy-completion-end (point))
+    (ivy-read "Unicode name: "
+              (mapcar (lambda (x)
+                        (propertize
+                         (format "% -6X% -60s%c" (cdr x) (car x) (cdr x))
+                         'result (cdr x)))
+                      (ucs-names))
+              :action (lambda (char)
+                        (with-ivy-window
+                          (delete-region ivy-completion-beg ivy-completion-end)
+                          (setq ivy-completion-beg (point))
+                          (insert-char (get-text-property 0 'result char))
+                          (setq ivy-completion-end (point))))
+              :history 'counsel-unicode-char-history)))
+
+;;* Elisp symbols
+;;** `counsel-describe-variable'
+(defvar counsel-describe-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-.") #'counsel-find-symbol)
+    (define-key map (kbd "C-,") #'counsel--info-lookup-symbol)
+    map))
+
+(ivy-set-actions
+ 'counsel-describe-variable
+ '(("i" counsel-info-lookup-symbol "info")
+   ("d" counsel--find-symbol "definition")))
+
+(defvar counsel-describe-symbol-history nil
+  "History for `counsel-describe-variable' and `counsel-describe-function'.")
+
+(defun counsel-find-symbol ()
+  "Jump to the definition of the current symbol."
+  (interactive)
+  (ivy-exit-with-action #'counsel--find-symbol))
+
+(defun counsel--info-lookup-symbol ()
+  "Lookup the current symbol in the info docs."
+  (interactive)
+  (ivy-exit-with-action #'counsel-info-lookup-symbol))
+
+(defun counsel--find-symbol (x)
+  "Find symbol definition that corresponds to string X."
+  (with-ivy-window
+    (with-no-warnings
+      (ring-insert find-tag-marker-ring (point-marker)))
+    (let ((full-name (get-text-property 0 'full-name x)))
+      (if full-name
+          (find-library full-name)
+        (let ((sym (read x)))
+          (cond ((and (eq (ivy-state-caller ivy-last)
+                          'counsel-describe-variable)
+                      (boundp sym))
+                 (find-variable sym))
+                ((fboundp sym)
+                 (find-function sym))
+                ((boundp sym)
+                 (find-variable sym))
+                ((or (featurep sym)
+                     (locate-library
+                      (prin1-to-string sym)))
+                 (find-library
+                  (prin1-to-string sym)))
+                (t
+                 (error "Couldn't fild definition of %s"
+                        sym))))))))
+
+(define-obsolete-function-alias 'counsel-symbol-at-point
+    'ivy-thing-at-point "0.7.0")
+
+(defun counsel-variable-list ()
+  "Return the list of all currently bound variables."
+  (let (cands)
+    (mapatoms
+     (lambda (vv)
+       (when (or (get vv 'variable-documentation)
+                 (and (boundp vv) (not (keywordp vv))))
+         (push (symbol-name vv) cands))))
+    cands))
+
+;;;###autoload
+(defun counsel-describe-variable ()
+  "Forward to `describe-variable'."
+  (interactive)
+  (let ((enable-recursive-minibuffers t))
+    (ivy-read
+     "Describe variable: "
+     (counsel-variable-list)
+     :keymap counsel-describe-map
+     :preselect (ivy-thing-at-point)
+     :history 'counsel-describe-symbol-history
+     :require-match t
+     :sort t
+     :action (lambda (x)
+               (describe-variable
+                (intern x)))
+     :caller 'counsel-describe-variable)))
+
+;;** `counsel-describe-function'
+(ivy-set-actions
+ 'counsel-describe-function
+ '(("i" counsel-info-lookup-symbol "info")
+   ("d" counsel--find-symbol "definition")))
+
+;;;###autoload
+(defun counsel-describe-function ()
+  "Forward to `describe-function'."
+  (interactive)
+  (let ((enable-recursive-minibuffers t))
+    (ivy-read "Describe function: "
+              (let (cands)
+                (mapatoms
+                 (lambda (x)
+                   (when (fboundp x)
+                     (push (symbol-name x) cands))))
+                cands)
+              :keymap counsel-describe-map
+              :preselect (ivy-thing-at-point)
+              :history 'counsel-describe-symbol-history
+              :require-match t
+              :sort t
+              :action (lambda (x)
+                        (describe-function
+                         (intern x)))
+              :caller 'counsel-describe-function)))
+
+;;** `counsel-info-lookup-symbol'
+(defvar info-lookup-mode)
+(declare-function info-lookup->completions "info-look")
+(declare-function info-lookup->mode-value "info-look")
+(declare-function info-lookup-select-mode "info-look")
+(declare-function info-lookup-change-mode "info-look")
+(declare-function info-lookup "info-look")
+
+;;;###autoload
+(defun counsel-info-lookup-symbol (symbol &optional mode)
+  "Forward to (`info-describe-symbol' SYMBOL MODE) with ivy completion."
+  (interactive
+   (progn
+     (require 'info-look)
+     (let* ((topic 'symbol)
+            (mode (cond (current-prefix-arg
+                         (info-lookup-change-mode topic))
+                        ((info-lookup->mode-value
+                          topic (info-lookup-select-mode))
+                         info-lookup-mode)
+                        ((info-lookup-change-mode topic))))
+            (completions (info-lookup->completions topic mode))
+            (enable-recursive-minibuffers t)
+            (value (ivy-read
+                    "Describe symbol: "
+                    (mapcar #'car completions)
+                    :sort t)))
+       (list value info-lookup-mode))))
+  (require 'info-look)
+  (info-lookup 'symbol symbol mode))
+
+;;** `counsel-M-x'
+(ivy-set-actions
+ 'counsel-M-x
+ '(("d" counsel--find-symbol "definition")
+   ("h" (lambda (x) (describe-function (intern x))) "help")))
+
+(ivy-set-display-transformer
+ 'counsel-M-x
+ 'counsel-M-x-transformer)
+
+(defun counsel-M-x-transformer (cmd)
+  "Return CMD appended with the corresponding binding in the current window."
+  (let ((binding (substitute-command-keys (format "\\[%s]" cmd))))
+    (setq binding (replace-regexp-in-string "C-x 6" "<f2>" binding))
+    (if (string-match "^M-x" binding)
+        cmd
+      (format "%s (%s)"
+              cmd (propertize binding 'face 'font-lock-keyword-face)))))
+
+(defvar smex-initialized-p)
+(defvar smex-ido-cache)
+(declare-function smex-initialize "ext:smex")
+(declare-function smex-detect-new-commands "ext:smex")
+(declare-function smex-update "ext:smex")
+(declare-function smex-rank "ext:smex")
+
+(defun counsel--M-x-prompt ()
+  "M-x plus the string representation of `current-prefix-arg'."
+  (if (not current-prefix-arg)
+      "M-x "
+    (concat
+     (if (eq current-prefix-arg '-)
+         "- "
+       (if (integerp current-prefix-arg)
+           (format "%d " current-prefix-arg)
+         (if (= (car current-prefix-arg) 4)
+             "C-u "
+           (format "%d " (car current-prefix-arg)))))
+     "M-x ")))
+
+;;;###autoload
+(defun counsel-M-x (&optional initial-input)
+  "Ivy version of `execute-extended-command'.
+Optional INITIAL-INPUT is the initial input in the minibuffer."
+  (interactive)
+  (unless initial-input
+    (setq initial-input (cdr (assoc this-command
+                                    ivy-initial-inputs-alist))))
+  (let* ((cands obarray)
+         (pred 'commandp)
+         (sort t))
+    (when (require 'smex nil 'noerror)
+      (unless smex-initialized-p
+        (smex-initialize))
+      (smex-detect-new-commands)
+      (smex-update)
+      (setq cands smex-ido-cache)
+      (setq pred nil)
+      (setq sort nil))
+    (ivy-read (counsel--M-x-prompt) cands
+              :predicate pred
+              :require-match t
+              :history 'extended-command-history
+              :action
+              (lambda (cmd)
+                (when (featurep 'smex)
+                  (smex-rank (intern cmd)))
+                (let ((prefix-arg current-prefix-arg)
+                      (this-command (intern cmd)))
+                  (command-execute (intern cmd) 'record)))
+              :sort sort
+              :keymap counsel-describe-map
+              :initial-input initial-input
+              :caller 'counsel-M-x)))
+
+;;** `counsel-load-library'
+;;;###autoload
+(defun counsel-load-library ()
+  "Load a selected the Emacs Lisp library.
+The libraries are offered from `load-path'."
+  (interactive)
+  (let ((dirs load-path)
+        (suffix (concat (regexp-opt '(".el" ".el.gz") t) "\\'"))
+        (cands (make-hash-table :test #'equal))
+        short-name
+        old-val
+        dir-parent
+        res)
+    (dolist (dir dirs)
+      (when (file-directory-p dir)
+        (dolist (file (file-name-all-completions "" dir))
+          (when (string-match suffix file)
+            (unless (string-match "pkg.elc?$" file)
+              (setq short-name (substring file 0 (match-beginning 0)))
+              (if (setq old-val (gethash short-name cands))
+                  (progn
+                    ;; assume going up directory once will resolve name clash
+                    (setq dir-parent (counsel-directory-parent (cdr old-val)))
+                    (puthash short-name
+                             (cons
+                              (counsel-string-compose dir-parent (car old-val))
+                              (cdr old-val))
+                             cands)
+                    (setq dir-parent (counsel-directory-parent dir))
+                    (puthash (concat dir-parent short-name)
+                             (cons
+                              (propertize
+                               (counsel-string-compose
+                                dir-parent short-name)
+                               'full-name (expand-file-name file dir))
+                              dir)
+                             cands))
+                (puthash short-name
+                         (cons (propertize
+                                short-name
+                                'full-name (expand-file-name file dir))
+                               dir) cands)))))))
+    (maphash (lambda (_k v) (push (car v) res)) cands)
+    (ivy-read "Load library: " (nreverse res)
+              :action (lambda (x)
+                        (load-library
+                         (get-text-property 0 'full-name x)))
+              :keymap counsel-describe-map)))
+
+;;** `counsel-load-theme'
+(declare-function powerline-reset "ext:powerline")
+
+(defun counsel-load-theme-action (x)
+  "Disable current themes and load theme X."
+  (condition-case nil
+      (progn
+        (mapc #'disable-theme custom-enabled-themes)
+        (load-theme (intern x))
+        (when (fboundp 'powerline-reset)
+          (powerline-reset)))
+    (error "Problem loading theme %s" x)))
+
+;;;###autoload
+(defun counsel-load-theme ()
+  "Forward to `load-theme'.
+Usable with `ivy-resume', `ivy-next-line-and-call' and
+`ivy-previous-line-and-call'."
+  (interactive)
+  (ivy-read "Load custom theme: "
+            (mapcar 'symbol-name
+                    (custom-available-themes))
+            :action #'counsel-load-theme-action
+            :caller 'counsel-load-theme))
+
+;;** `counsel-descbinds'
+(ivy-set-actions
+ 'counsel-descbinds
+ '(("d" counsel-descbinds-action-find "definition")
+   ("i" counsel-descbinds-action-info "info")))
+
+(defvar counsel-descbinds-history nil
+  "History for `counsel-descbinds'.")
+
+(defun counsel--descbinds-cands (&optional prefix buffer)
+  (let ((buffer (or buffer (current-buffer)))
+        (re-exclude (regexp-opt
+                     '("<vertical-line>" "<bottom-divider>" "<right-divider>"
+                       "<mode-line>" "<C-down-mouse-2>" "<left-fringe>"
+                       "<right-fringe>" "<header-line>"
+                       "<vertical-scroll-bar>" "<horizontal-scroll-bar>")))
+        res)
+    (with-temp-buffer
+      (let ((indent-tabs-mode t))
+        (describe-buffer-bindings buffer prefix))
+      (goto-char (point-min))
+      ;; Skip the "Key translations" section
+      (re-search-forward "")
+      (forward-char 1)
+      (while (not (eobp))
+        (when (looking-at "^\\([^\t\n]+\\)\t+\\(.*\\)$")
+          (let ((key (match-string 1))
+                (fun (match-string 2))
+                cmd)
+            (unless (or (member fun '("??" "self-insert-command"))
+                        (string-match re-exclude key)
+                        (not (or (commandp (setq cmd (intern-soft fun)))
+                                 (member fun '("Prefix Command")))))
+              (push
+               (cons (format
+                      "%-15s %s"
+                      (propertize key 'face 'font-lock-builtin-face)
+                      fun)
+                     (cons key cmd))
+               res))))
+        (forward-line 1)))
+    (nreverse res)))
+
+(defun counsel-descbinds-action-describe (x)
+  (let ((cmd (cdr x)))
+    (describe-function cmd)))
+
+(defun counsel-descbinds-action-find (x)
+  (let ((cmd (cdr x)))
+    (counsel--find-symbol (symbol-name cmd))))
+
+(defun counsel-descbinds-action-info (x)
+  (let ((cmd (cdr x)))
+    (counsel-info-lookup-symbol (symbol-name cmd))))
+
+;;;###autoload
+(defun counsel-descbinds (&optional prefix buffer)
+  "Show a list of all defined keys, and their definitions.
+Describe the selected candidate."
+  (interactive)
+  (ivy-read "Bindings: " (counsel--descbinds-cands prefix buffer)
+            :action #'counsel-descbinds-action-describe
+            :history 'counsel-descbinds-history
+            :caller 'counsel-descbinds))
+;;* Git
+;;** `counsel-git'
+(defvar counsel--git-dir nil
+  "Store the base git directory.")
+
+(ivy-set-actions
+ 'counsel-git
+ '(("j"
+    find-file-other-window
+    "other")))
+
+;;;###autoload
+(defun counsel-git ()
+  "Find file in the current Git repository."
+  (interactive)
+  (setq counsel--git-dir (expand-file-name
+                          (locate-dominating-file
+                           default-directory ".git")))
+  (let* ((default-directory counsel--git-dir)
+         (cands (split-string
+                 (shell-command-to-string
+                  "git ls-files --full-name --")
+                 "\n"
+                 t)))
+    (ivy-read (funcall counsel-prompt-function "Find file")
+              cands
+              :action #'counsel-git-action)))
+
+(defun counsel-git-action (x)
+  (with-ivy-window
+    (let ((default-directory counsel--git-dir))
+      (find-file x))))
+
+;;** `counsel-git-grep'
+(defvar counsel-git-grep-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-l") 'counsel-git-grep-recenter)
+    (define-key map (kbd "M-q") 'counsel-git-grep-query-replace)
+    (define-key map (kbd "C-c C-m") 'counsel-git-grep-switch-cmd)
+    map))
+
+(ivy-set-occur 'counsel-git-grep 'counsel-git-grep-occur)
+(ivy-set-display-transformer 'counsel-git-grep 'counsel-git-grep-transformer)
+
+(defvar counsel-git-grep-cmd "git --no-pager grep --full-name -n --no-color -i -e %S"
+  "Store the command for `counsel-git-grep'.")
+
+(defvar counsel--git-grep-dir nil
+  "Store the base git directory.")
+
+(defvar counsel--git-grep-count nil
+  "Store the line count in current repository.")
+
+(defvar counsel-git-grep-history nil
+  "History for `counsel-git-grep'.")
+
+(defvar counsel-git-grep-cmd-history
+  '("git --no-pager grep --full-name -n --no-color -i -e %S")
+  "History for `counsel-git-grep' shell commands.")
+
+(defun counsel-prompt-function-dir (prompt)
+  "Return PROMPT appended with the parent directory."
+  (let ((directory counsel--git-grep-dir))
+    (format "%s [%s]: "
+            prompt
+            (let ((dir-list (eshell-split-path directory)))
+              (if (> (length dir-list) 3)
+                  (apply #'concat
+                         (append '("...")
+                                 (cl-subseq dir-list (- (length dir-list) 3))))
+                directory)))))
+
+(defun counsel-git-grep-function (string &optional _pred &rest _unused)
+  "Grep in the current git repository for STRING."
+  (if (and (> counsel--git-grep-count 20000)
+           (< (length string) 3))
+      (counsel-more-chars 3)
+    (let* ((default-directory counsel--git-grep-dir)
+           (cmd (format counsel-git-grep-cmd
+                        (setq ivy--old-re (ivy--regex string t)))))
+      (if (<= counsel--git-grep-count 20000)
+          (split-string (shell-command-to-string cmd) "\n" t)
+        (counsel--gg-candidates (ivy--regex string))
+        nil))))
+
+(defun counsel-git-grep-action (x)
+  (when (string-match "\\`\\(.*?\\):\\([0-9]+\\):\\(.*\\)\\'" x)
+    (with-ivy-window
+      (let ((file-name (match-string-no-properties 1 x))
+            (line-number (match-string-no-properties 2 x)))
+        (find-file (expand-file-name file-name counsel--git-grep-dir))
+        (goto-char (point-min))
+        (forward-line (1- (string-to-number line-number)))
+        (re-search-forward (ivy--regex ivy-text t) (line-end-position) t)
+        (unless (eq ivy-exit 'done)
+          (swiper--cleanup)
+          (swiper--add-overlays (ivy--regex ivy-text)))))))
+
+(defun counsel-git-grep-matcher (regexp candidates)
+  (or (and (equal regexp ivy--old-re)
+           ivy--old-cands)
+      (prog1
+          (setq ivy--old-cands
+                (cl-remove-if-not
+                 (lambda (x)
+                   (ignore-errors
+                     (when (string-match "^[^:]+:[^:]+:" x)
+                       (setq x (substring x (match-end 0)))
+                       (if (stringp regexp)
+                           (string-match regexp x)
+                         (let ((res t))
+                           (dolist (re regexp)
+                             (setq res
+                                   (and res
+                                        (ignore-errors
+                                          (if (cdr re)
+                                              (string-match (car re) x)
+                                            (not (string-match (car re) x)))))))
+                           res)))))
+                 candidates))
+        (setq ivy--old-re regexp))))
+
+(defun counsel-git-grep-transformer (str)
+  "Higlight file and line number in STR."
+  (when (string-match "\\`\\([^:]+\\):\\([^:]+\\):" str)
+    (set-text-properties (match-beginning 1)
+                         (match-end 1)
+                         '(face compilation-info)
+                         str)
+    (set-text-properties (match-beginning 2)
+                         (match-end 2)
+                         '(face compilation-line-number)
+                         str))
+  str)
+
+;;;###autoload
+(defun counsel-git-grep (&optional cmd initial-input)
+  "Grep for a string in the current git repository.
+When CMD is a string, use it as a \"git grep\" command.
+When CMD is non-nil, prompt for a specific \"git grep\" command.
+INITIAL-INPUT can be given as the initial minibuffer input."
+  (interactive "P")
+  (cond
+    ((stringp cmd)
+     (setq counsel-git-grep-cmd cmd))
+    (cmd
+     (setq counsel-git-grep-cmd
+           (ivy-read "cmd: " counsel-git-grep-cmd-history
+                     :history 'counsel-git-grep-cmd-history))
+     (setq counsel-git-grep-cmd-history
+           (delete-dups counsel-git-grep-cmd-history)))
+    (t
+     (setq counsel-git-grep-cmd "git --no-pager grep --full-name -n --no-color -i -e %S")))
+  (setq counsel--git-grep-dir
+        (locate-dominating-file default-directory ".git"))
+  (if (null counsel--git-grep-dir)
+      (error "Not in a git repository")
+    (setq counsel--git-grep-count (counsel--gg-count "" t))
+    (ivy-read
+     (funcall counsel-prompt-function "git grep")
+     'counsel-git-grep-function
+     :initial-input initial-input
+     :matcher #'counsel-git-grep-matcher
+     :dynamic-collection (> counsel--git-grep-count 20000)
+     :keymap counsel-git-grep-map
+     :action #'counsel-git-grep-action
+     :unwind #'swiper--cleanup
+     :history 'counsel-git-grep-history
+     :caller 'counsel-git-grep)))
+
+(defun counsel-git-grep-switch-cmd ()
+  "Set `counsel-git-grep-cmd' to a different value."
+  (interactive)
+  (setq counsel-git-grep-cmd
+        (ivy-read "cmd: " counsel-git-grep-cmd-history
+                  :history 'counsel-git-grep-cmd-history))
+  (setq counsel-git-grep-cmd-history
+        (delete-dups counsel-git-grep-cmd-history))
+  (unless (ivy-state-dynamic-collection ivy-last)
+    (setq ivy--all-candidates
+          (all-completions "" 'counsel-git-grep-function))))
+
+(defvar counsel-gg-state nil
+  "The current state of candidates / count sync.")
+
+(defun counsel--gg-candidates (regex)
+  "Return git grep candidates for REGEX."
+  (setq counsel-gg-state -2)
+  (counsel--gg-count regex)
+  (let* ((default-directory counsel--git-grep-dir)
+         (counsel-gg-process " *counsel-gg*")
+         (proc (get-process counsel-gg-process))
+         (buff (get-buffer counsel-gg-process)))
+    (when proc
+      (delete-process proc))
+    (when buff
+      (kill-buffer buff))
+    (setq proc (start-process-shell-command
+                counsel-gg-process
+                counsel-gg-process
+                (concat
+                 (format counsel-git-grep-cmd regex)
+                 " | head -n 200")))
+    (set-process-sentinel
+     proc
+     #'counsel--gg-sentinel)))
+
+(defun counsel--gg-sentinel (process event)
+  (if (string= event "finished\n")
+      (progn
+        (with-current-buffer (process-buffer process)
+          (setq ivy--all-candidates
+                (or (split-string (buffer-string) "\n" t)
+                    '("")))
+          (setq ivy--old-cands ivy--all-candidates))
+        (when (= 0 (cl-incf counsel-gg-state))
+          (ivy--exhibit)))
+    (if (string= event "exited abnormally with code 1\n")
+        (progn
+          (setq ivy--all-candidates '("Error"))
+          (setq ivy--old-cands ivy--all-candidates)
+          (ivy--exhibit)))))
+
+(defun counsel--gg-count (regex &optional no-async)
+  "Quickly and asynchronously count the amount of git grep REGEX matches.
+When NO-ASYNC is non-nil, do it synchronously."
+  (let ((default-directory counsel--git-grep-dir)
+        (cmd
+         (concat
+          (format
+           (replace-regexp-in-string
+            "--full-name" "-c"
+            counsel-git-grep-cmd)
+           ;; "git grep -i -c '%s'"
+           (replace-regexp-in-string
+            "-" "\\\\-"
+            (replace-regexp-in-string "'" "''" regex)))
+          " | sed 's/.*:\\(.*\\)/\\1/g' | awk '{s+=$1} END {print s}'"))
+        (counsel-ggc-process " *counsel-gg-count*"))
+    (if no-async
+        (string-to-number (shell-command-to-string cmd))
+      (let ((proc (get-process counsel-ggc-process))
+            (buff (get-buffer counsel-ggc-process)))
+        (when proc
+          (delete-process proc))
+        (when buff
+          (kill-buffer buff))
+        (setq proc (start-process-shell-command
+                    counsel-ggc-process
+                    counsel-ggc-process
+                    cmd))
+        (set-process-sentinel
+         proc
+         #'(lambda (process event)
+             (when (string= event "finished\n")
+               (with-current-buffer (process-buffer process)
+                 (setq ivy--full-length (string-to-number (buffer-string))))
+               (when (= 0 (cl-incf counsel-gg-state))
+                 (ivy--exhibit)))))))))
+
+(defun counsel-git-grep-occur ()
+  "Generate a custom occur buffer for `counsel-git-grep'.
+When REVERT is non-nil, regenerate the current *ivy-occur* buffer."
+  (unless (eq major-mode 'ivy-occur-grep-mode)
+    (ivy-occur-grep-mode)
+    (setq default-directory counsel--git-grep-dir))
+  (let ((cands (split-string
+                (shell-command-to-string
+                 (format counsel-git-grep-cmd
+                         (setq ivy--old-re (ivy--regex ivy-text t))))
+                "\n"
+                t)))
+    ;; Need precise number of header lines for `wgrep' to work.
+    (insert (format "-*- mode:grep; default-directory: %S -*-\n\n\n"
+                    default-directory))
+    (insert (format "%d candidates:\n" (length cands)))
+    (ivy--occur-insert-lines
+     (mapcar
+      (lambda (cand) (concat "./" cand))
+      cands))))
+
+(defun counsel-git-grep-query-replace ()
+  "Start `query-replace' with string to replace from last search string."
+  (interactive)
+  (if (null (window-minibuffer-p))
+      (user-error
+       "Should only be called in the minibuffer through `counsel-git-grep-map'")
+    (let* ((enable-recursive-minibuffers t)
+           (from (ivy--regex ivy-text))
+           (to (query-replace-read-to from "Query replace" t)))
+      (ivy-exit-with-action
+       (lambda (_)
+         (let (done-buffers)
+           (dolist (cand ivy--old-cands)
+             (when (string-match "\\`\\(.*?\\):\\([0-9]+\\):\\(.*\\)\\'" cand)
+               (with-ivy-window
+                 (let ((file-name (match-string-no-properties 1 cand)))
+                   (setq file-name (expand-file-name file-name counsel--git-grep-dir))
+                   (unless (member file-name done-buffers)
+                     (push file-name done-buffers)
+                     (find-file file-name)
+                     (goto-char (point-min)))
+                   (perform-replace from to t t nil)))))))))))
+
+(defun counsel-git-grep-recenter ()
+  (interactive)
+  (with-ivy-window
+    (counsel-git-grep-action ivy--current)
+    (recenter-top-bottom)))
+
+;;** `counsel-git-stash'
+(defun counsel-git-stash-kill-action (x)
+  (when (string-match "\\([^:]+\\):" x)
+    (kill-new (message (format "git stash apply %s" (match-string 1 x))))))
+
+;;;###autoload
+(defun counsel-git-stash ()
+  "Search through all available git stashes."
+  (interactive)
+  (let ((dir (locate-dominating-file default-directory ".git")))
+    (if (null dir)
+        (error "Not in a git repository")
+      (let ((cands (split-string (shell-command-to-string
+                                  "IFS=$'\n'
+for i in `git stash list --format=\"%gd\"`; do
+    git stash show -p $i | grep -H --label=\"$i\" \"$1\"
+done") "\n" t)))
+        (ivy-read "git stash: " cands
+                  :action 'counsel-git-stash-kill-action
+                  :caller 'counsel-git-stash)))))
+;;** `counsel-git-log'
+(defun counsel-git-log-function (input)
+  (if (< (length input) 3)
+      (counsel-more-chars 3)
+    ;; `counsel--yank-pop-format-function' uses this
+    (setq ivy--old-re (funcall ivy--regex-function input))
+    (counsel--async-command
+     ;; "git log --grep" likes to have groups quoted e.g. \(foo\).
+     ;; But it doesn't like the non-greedy ".*?".
+     (format "GIT_PAGER=cat git log --grep '%s'"
+             (replace-regexp-in-string
+              "\\.\\*\\?" ".*"
+              ivy--old-re)))
+    nil))
+
+(defun counsel-git-log-action (x)
+  (message "%S" (kill-new x)))
+
+(defcustom counsel-yank-pop-truncate-radius 2
+  "When non-nil, truncate the display of long strings."
+  :type 'integer
+  :group 'ivy)
+
+;;;###autoload
+(defun counsel-git-log ()
+  "Call the \"git log --grep\" shell command."
+  (interactive)
+  (let ((counsel-async-split-string-re "\ncommit ")
+        (counsel-yank-pop-truncate-radius 5)
+        (ivy-format-function #'counsel--yank-pop-format-function)
+        (ivy-height 4))
+    (ivy-read "Grep log: " #'counsel-git-log-function
+              :dynamic-collection t
+              :action #'counsel-git-log-action
+              :unwind #'counsel-delete-process
+              :caller 'counsel-git-log)))
+
+;;* File
+;;** `counsel-find-file'
+(defvar counsel-find-file-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-DEL") 'counsel-up-directory)
+    (define-key map (kbd "C-<backspace>") 'counsel-up-directory)
+    map))
+
+(add-to-list 'ivy-ffap-url-functions 'counsel-github-url-p)
+(add-to-list 'ivy-ffap-url-functions 'counsel-emacs-url-p)
+(ivy-set-actions
+ 'counsel-find-file
+ '(("f" find-file-other-window "other window")))
+
+(defcustom counsel-find-file-at-point nil
+  "When non-nil, add file-at-point to the list of candidates."
+  :type 'boolean
+  :group 'ivy)
+
+(defcustom counsel-find-file-ignore-regexp nil
+  "A regexp of files to ignore while in `counsel-find-file'.
+These files are un-ignored if `ivy-text' matches them.  The
+common way to show all files is to start `ivy-text' with a dot.
+
+Example value: \"\\(?:\\`[#.]\\)\\|\\(?:[#~]\\'\\)\". This will hide
+temporary and lock files.
+\\<ivy-minibuffer-map>
+Choosing the dotfiles option, \"\\`\\.\", might be convenient,
+since you can still access the dotfiles if your input starts with
+a dot. The generic way to toggle ignored files is \\[ivy-toggle-ignore],
+but the leading dot is a lot faster."
+  :group 'ivy
+  :type '(choice
+          (const :tag "None" nil)
+          (const :tag "Dotfiles" "\\`\\.")
+          (regexp :tag "Regex")))
+
+(defun counsel--find-file-matcher (regexp candidates)
+  "Return REGEXP-matching CANDIDATES.
+Skip some dotfiles unless `ivy-text' requires them."
+  (let ((res (ivy--re-filter regexp candidates)))
+    (if (or (null ivy-use-ignore)
+            (null counsel-find-file-ignore-regexp)
+            (string-match "\\`\\." ivy-text))
+        res
+      (or (cl-remove-if
+           (lambda (x)
+             (and
+              (string-match counsel-find-file-ignore-regexp x)
+              (not (member x ivy-extra-directories))))
+           res)
+          res))))
+
+(declare-function ffap-guesser "ffap")
+
+;;;###autoload
+(defun counsel-find-file (&optional initial-input)
+  "Forward to `find-file'.
+When INITIAL-INPUT is non-nil, use it in the minibuffer during completion."
+  (interactive)
+  (ivy-read "Find file: " 'read-file-name-internal
+            :matcher #'counsel--find-file-matcher
+            :initial-input initial-input
+            :action
+            (lambda (x)
+              (with-ivy-window
+                (find-file (expand-file-name x ivy--directory))))
+            :preselect (when counsel-find-file-at-point
+                         (require 'ffap)
+                         (let ((f (ffap-guesser)))
+                           (when f (expand-file-name f))))
+            :require-match 'confirm-after-completion
+            :history 'file-name-history
+            :keymap counsel-find-file-map
+            :caller 'counsel-find-file))
+
+(defun counsel-up-directory ()
+  "Go to the parent directory preselecting the current one."
+  (interactive)
+  (let ((dir-file-name
+         (directory-file-name (expand-file-name ivy--directory))))
+    (ivy--cd (file-name-directory dir-file-name))
+    (setf (ivy-state-preselect ivy-last)
+          (file-name-as-directory (file-name-nondirectory dir-file-name)))))
+
+(defun counsel-at-git-issue-p ()
+  "Whe point is at an issue in a Git-versioned file, return the issue string."
+  (and (looking-at "#[0-9]+")
+       (or
+        (eq (vc-backend (buffer-file-name)) 'Git)
+        (memq major-mode '(magit-commit-mode)))
+       (match-string-no-properties 0)))
+
+(defun counsel-github-url-p ()
+  "Return a Github issue URL at point."
+  (let ((url (counsel-at-git-issue-p)))
+    (when url
+      (let ((origin (shell-command-to-string
+                     "git remote get-url origin"))
+            user repo)
+        (cond ((string-match "\\`git@github.com:\\([^/]+\\)/\\(.*\\)\\.git$"
+                             origin)
+               (setq user (match-string 1 origin))
+               (setq repo (match-string 2 origin)))
+              ((string-match "\\`https://github.com/\\([^/]+\\)/\\(.*\\)$"
+                             origin)
+               (setq user (match-string 1 origin))
+               (setq repo (match-string 2 origin))))
+        (when user
+          (setq url (format "https://github.com/%s/%s/issues/%s"
+                            user repo (substring url 1))))))))
+
+(defun counsel-emacs-url-p ()
+  "Return a Debbugs issue URL at point."
+  (let ((url (counsel-at-git-issue-p)))
+    (when url
+      (let ((origin (shell-command-to-string
+                     "git remote get-url origin")))
+        (when (string-match "git.sv.gnu.org:/srv/git/emacs.git" origin)
+          (format "http://debbugs.gnu.org/cgi/bugreport.cgi?bug=%s"
+                  (substring url 1)))))))
+
+;;** `counsel-locate'
+(defcustom counsel-locate-options nil
+  "Command line options for `locate`."
+  :group 'ivy
+  :type '(repeat string))
+
+(make-obsolete-variable 'counsel-locate-options 'counsel-locate-cmd "0.7.0")
+
+(defcustom counsel-locate-cmd (cond ((eq system-type 'darwin)
+                                     'counsel-locate-cmd-noregex)
+                                    ((and (eq system-type 'windows-nt)
+                                          (executable-find "es.exe"))
+                                     'counsel-locate-cmd-es)
+                                    (t
+                                     'counsel-locate-cmd-default))
+  "The function for producing a locate command string from the input.
+
+The function takes a string - the current input, and returns a
+string - the full shell command to run."
+  :group 'ivy
+  :type '(choice
+          (const :tag "Default" counsel-locate-cmd-default)
+          (const :tag "No regex" counsel-locate-cmd-noregex)
+          (const :tag "mdfind" counsel-locate-cmd-mdfind)
+          (const :tag "everything" counsel-locate-cmd-es)))
+
+(ivy-set-actions
+ 'counsel-locate
+ '(("x" counsel-locate-action-extern "xdg-open")
+   ("d" counsel-locate-action-dired "dired")))
+
+(counsel-set-async-exit-code 'counsel-locate 1 "Nothing found")
+
+(defvar counsel-locate-history nil
+  "History for `counsel-locate'.")
+
+(defun counsel-locate-action-extern (x)
+  "Use xdg-open shell command on X."
+  (call-process shell-file-name nil
+                nil nil
+                shell-command-switch
+                (format "%s %s"
+                        (if (eq system-type 'darwin)
+                            "open"
+                          "xdg-open")
+                        (shell-quote-argument x))))
+
+(declare-function dired-jump "dired-x")
+
+(defun counsel-locate-action-dired (x)
+  "Use `dired-jump' on X."
+  (dired-jump nil x))
+
+(defun counsel-locate-cmd-default (input)
+  "Return a shell command based on INPUT."
+  (format "locate -i --regex '%s'"
+          (counsel-unquote-regex-parens
+           (ivy--regex input))))
+
+(defun counsel-locate-cmd-noregex (input)
+  "Return a shell command based on INPUT."
+  (format "locate -i '%s'" input))
+
+(defun counsel-locate-cmd-mdfind (input)
+  "Return a shell command based on INPUT."
+  (format "mdfind -name '%s'" input))
+
+(defun counsel-locate-cmd-es (input)
+  "Return a shell command based on INPUT."
+  (format "es.exe -i -r %s"
+          (counsel-unquote-regex-parens
+           (ivy--regex input t))))
+
+(defun counsel-locate-function (input)
+  (if (< (length input) 3)
+      (counsel-more-chars 3)
+    (counsel--async-command
+     (funcall counsel-locate-cmd input))
+    '("" "working...")))
+
+;;;###autoload
+(defun counsel-locate (&optional initial-input)
+  "Call the \"locate\" shell command.
+INITIAL-INPUT can be given as the initial minibuffer input."
+  (interactive)
+  (ivy-read "Locate: " #'counsel-locate-function
+            :initial-input initial-input
+            :dynamic-collection t
+            :history 'counsel-locate-history
+            :action (lambda (file)
+                      (with-ivy-window
+                        (when file
+                          (find-file file))))
+            :unwind #'counsel-delete-process
+            :caller 'counsel-locate))
+
+;;* Grep
+;;** `counsel-ag'
+(defvar counsel-ag-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-l") 'counsel-git-grep-recenter)
+    (define-key map (kbd "M-q") 'counsel-git-grep-query-replace)
+    map))
+
+(defcustom counsel-ag-base-command "ag --nocolor --nogroup %s -- ."
+  "Format string to use in `cousel-ag-function' to construct the
+command. %S will be replaced by the regex string. The default is
+\"ag --nocolor --nogroup %s -- .\"."
+  :type 'string
+  :group 'ivy)
+
+(counsel-set-async-exit-code 'counsel-ag 1 "No matches found")
+(ivy-set-occur 'counsel-ag 'counsel-ag-occur)
+(ivy-set-display-transformer 'counsel-ag 'counsel-git-grep-transformer)
+
+(defun counsel-ag-function (string)
+  "Grep in the current directory for STRING."
+  (if (< (length string) 3)
+      (counsel-more-chars 3)
+    (let ((default-directory counsel--git-grep-dir)
+          (regex (counsel-unquote-regex-parens
+                  (setq ivy--old-re
+                        (ivy--regex string)))))
+      (counsel--async-command
+       (format counsel-ag-base-command (shell-quote-argument regex)))
+      nil)))
+
+;;;###autoload
+(defun counsel-ag (&optional initial-input initial-directory)
+  "Grep for a string in the current directory using ag.
+INITIAL-INPUT can be given as the initial minibuffer input."
+  (interactive
+   (list nil
+         (when current-prefix-arg
+           (read-directory-name (concat
+                                 (car (split-string counsel-ag-base-command))
+                                 " in directory: ")))))
+  (setq counsel--git-grep-dir (or initial-directory default-directory))
+  (ivy-read (funcall counsel-prompt-function
+                     (car (split-string counsel-ag-base-command)))
+            'counsel-ag-function
+            :initial-input initial-input
+            :dynamic-collection t
+            :keymap counsel-ag-map
+            :history 'counsel-git-grep-history
+            :action #'counsel-git-grep-action
+            :unwind (lambda ()
+                      (counsel-delete-process)
+                      (swiper--cleanup))
+            :caller 'counsel-ag))
+
+(defun counsel-ag-occur ()
+  "Generate a custom occur buffer for `counsel-ag'."
+  (unless (eq major-mode 'ivy-occur-grep-mode)
+    (ivy-occur-grep-mode))
+  (setq default-directory counsel--git-grep-dir)
+  (let* ((regex (counsel-unquote-regex-parens
+                 (setq ivy--old-re
+                       (ivy--regex
+                        (progn (string-match "\"\\(.*\\)\"" (buffer-name))
+                               (match-string 1 (buffer-name)))))))
+         (cands (split-string
+                 (shell-command-to-string
+                  (format counsel-ag-base-command (shell-quote-argument regex)))
+                 "\n"
+                 t)))
+    ;; Need precise number of header lines for `wgrep' to work.
+    (insert (format "-*- mode:grep; default-directory: %S -*-\n\n\n"
+                    default-directory))
+    (insert (format "%d candidates:\n" (length cands)))
+    (ivy--occur-insert-lines
+     (mapcar
+      (lambda (cand) (concat "./" cand))
+      cands))))
+
+;;** `counsel-pt'
+(defcustom counsel-pt-base-command "pt --nocolor --nogroup -e %s -- ."
+  "Used to in place of `counsel-ag-base-command' to search with
+pt using `counsel-ag'."
+  :type 'string
+  :group 'ivy)
+
+;;;###autoload
+(defun counsel-pt ()
+  "Grep for a string in the current directory using pt.
+This uses `counsel-ag' with `counsel-pt-base-command' replacing
+`counsel-ag-base-command'."
+  (interactive)
+  (let ((counsel-ag-base-command counsel-pt-base-command))
+    (call-interactively 'counsel-ag)))
+
+;;** `counsel-grep'
+(defcustom counsel-grep-base-command "grep -nE \"%s\" %s"
+  "Format string to use in `cousel-grep-function' to construct
+the command."
+  :type 'string
+  :group 'ivy)
+
+(defun counsel-grep-function (string)
+  "Grep in the current directory for STRING."
+  (if (< (length string) 2)
+      (counsel-more-chars 2)
+    (let ((regex (counsel-unquote-regex-parens
+                  (setq ivy--old-re
+                        (ivy--regex string)))))
+      (counsel--async-command
+       (format counsel-grep-base-command regex counsel--git-grep-dir))
+      nil)))
+
+(defun counsel-grep-action (x)
+  (with-ivy-window
+    (swiper--cleanup)
+    (let ((default-directory (file-name-directory counsel--git-grep-dir))
+          file-name line-number)
+      (when (cond ((string-match "\\`\\([0-9]+\\):\\(.*\\)\\'" x)
+                   (setq file-name counsel--git-grep-dir)
+                   (setq line-number (match-string-no-properties 1 x)))
+                  ((string-match "\\`\\([^:]+\\):\\([0-9]+\\):\\(.*\\)\\'" x)
+                   (setq file-name (match-string-no-properties 1 x))
+                   (setq line-number (match-string-no-properties 2 x)))
+                  (t nil))
+        (find-file file-name)
+        (setq line-number (string-to-number line-number))
+        (if (null counsel-grep-last-line)
+            (progn
+              (goto-char (point-min))
+              (forward-line (1- (setq counsel-grep-last-line line-number))))
+          (forward-line (- line-number counsel-grep-last-line))
+          (setq counsel-grep-last-line line-number))
+        (re-search-forward (ivy--regex ivy-text t) (line-end-position) t)
+        (if (eq ivy-exit 'done)
+            (swiper--ensure-visible)
+          (isearch-range-invisible (line-beginning-position)
+                                   (line-end-position))
+          (swiper--add-overlays (ivy--regex ivy-text)))))))
+
+(defun counsel-grep-occur ()
+  "Generate a custom occur buffer for `counsel-grep'."
+  (unless (eq major-mode 'ivy-occur-grep-mode)
+    (ivy-occur-grep-mode))
+  (let ((cands
+         (split-string
+          (shell-command-to-string
+           (format counsel-grep-base-command
+                   (counsel-unquote-regex-parens
+                    (setq ivy--old-re
+                          (ivy--regex
+                           (progn (string-match "\"\\(.*\\)\"" (buffer-name))
+                                  (match-string 1 (buffer-name))) t)))
+                   counsel--git-grep-dir))
+          "\n" t))
+        (file (file-name-nondirectory counsel--git-grep-dir)))
+    ;; Need precise number of header lines for `wgrep' to work.
+    (insert (format "-*- mode:grep; default-directory: %S -*-\n\n\n"
+                    default-directory))
+    (insert (format "%d candidates:\n" (length cands)))
+    (ivy--occur-insert-lines
+     (mapcar
+      (lambda (cand) (concat "./" file ":" cand))
+      cands))))
+
+(ivy-set-occur 'counsel-grep 'counsel-grep-occur)
+(counsel-set-async-exit-code 'counsel-grep 1 "")
+
+;;;###autoload
+(defun counsel-grep ()
+  "Grep for a string in the current file."
+  (interactive)
+  (setq counsel-grep-last-line nil)
+  (setq counsel--git-grep-dir (buffer-file-name))
+  (let ((init-point (point))
+        res)
+    (unwind-protect
+         (setq res (ivy-read "grep: " 'counsel-grep-function
+                             :dynamic-collection t
+                             :preselect (format "%d:%s"
+                                                (line-number-at-pos)
+                                                (buffer-substring-no-properties
+                                                 (line-beginning-position)
+                                                 (line-end-position)))
+                             :history 'counsel-git-grep-history
+                             :update-fn (lambda ()
+                                          (counsel-grep-action ivy--current))
+                             :action #'counsel-grep-action
+                             :unwind (lambda ()
+                                       (counsel-delete-process)
+                                       (swiper--cleanup))
+                             :caller 'counsel-grep))
+      (unless res
+        (goto-char init-point)))))
+
+;;** `counsel-grep-or-swiper'
+(defcustom counsel-grep-swiper-limit 300000
+  "When the buffer is larger than this, use `counsel-grep' instead of `swiper'."
+  :type 'integer
+  :group 'ivy)
+
+;;;###autoload
+(defun counsel-grep-or-swiper ()
+  "Call `swiper' for small buffers and `counsel-grep' for large ones."
+  (interactive)
+  (if (and (buffer-file-name)
+           (not (buffer-narrowed-p))
+           (not (ignore-errors
+                  (file-remote-p (buffer-file-name))))
+           (> (buffer-size)
+              (if (eq major-mode 'org-mode)
+                  (/ counsel-grep-swiper-limit 4)
+                counsel-grep-swiper-limit)))
+      (progn
+        (save-buffer)
+        (counsel-grep))
+    (swiper--ivy (swiper--candidates))))
+
+;;** `counsel-recoll'
+(defun counsel-recoll-function (string)
+  "Grep in the current directory for STRING."
+  (if (< (length string) 3)
+      (counsel-more-chars 3)
+    (counsel--async-command
+     (format "recoll -t -b '%s'" string))
+    nil))
+
+;; This command uses the recollq command line tool that comes together
+;; with the recoll (the document indexing database) source:
+;;     http://www.lesbonscomptes.com/recoll/download.html
+;; You need to build it yourself (together with recoll):
+;;     cd ./query && make && sudo cp recollq /usr/local/bin
+;; You can try the GUI version of recoll with:
+;;     sudo apt-get install recoll
+;; Unfortunately, that does not install recollq.
+(defun counsel-recoll (&optional initial-input)
+  "Search for a string in the recoll database.
+You'll be given a list of files that match.
+Selecting a file will launch `swiper' for that file.
+INITIAL-INPUT can be given as the initial minibuffer input."
+  (interactive)
+  (ivy-read "recoll: " 'counsel-recoll-function
+            :initial-input initial-input
+            :dynamic-collection t
+            :history 'counsel-git-grep-history
+            :action (lambda (x)
+                      (when (string-match "file://\\(.*\\)\\'" x)
+                        (let ((file-name (match-string 1 x)))
+                          (find-file file-name)
+                          (unless (string-match "pdf$" x)
+                            (swiper ivy-text)))))
+            :unwind #'counsel-delete-process
+            :caller 'counsel-recoll))
+;;* Misc Emacs
+;;** `counsel-org-tag'
+(defvar counsel-org-tags nil
+  "Store the current list of tags.")
+
+(defvar org-outline-regexp)
+(defvar org-indent-mode)
+(defvar org-indent-indentation-per-level)
+(defvar org-tags-column)
+(declare-function org-get-tags-string "org")
+(declare-function org-move-to-column "org-compat")
+
+(defun counsel-org-change-tags (tags)
+  (let ((current (org-get-tags-string))
+        (col (current-column))
+        level)
+    ;; Insert new tags at the correct column
+    (beginning-of-line 1)
+    (setq level (or (and (looking-at org-outline-regexp)
+                         (- (match-end 0) (point) 1))
+                    1))
+    (cond
+      ((and (equal current "") (equal tags "")))
+      ((re-search-forward
+        (concat "\\([ \t]*" (regexp-quote current) "\\)[ \t]*$")
+        (point-at-eol) t)
+       (if (equal tags "")
+           (delete-region
+            (match-beginning 0)
+            (match-end 0))
+         (goto-char (match-beginning 0))
+         (let* ((c0 (current-column))
+                ;; compute offset for the case of org-indent-mode active
+                (di (if (bound-and-true-p org-indent-mode)
+                        (* (1- org-indent-indentation-per-level) (1- level))
+                      0))
+                (p0 (if (equal (char-before) ?*) (1+ (point)) (point)))
+                (tc (+ org-tags-column (if (> org-tags-column 0) (- di) di)))
+                (c1 (max (1+ c0) (if (> tc 0) tc (- (- tc) (string-width tags)))))
+                (rpl (concat (make-string (max 0 (- c1 c0)) ?\ ) tags)))
+           (replace-match rpl t t)
+           (and c0 indent-tabs-mode (tabify p0 (point)))
+           tags)))
+      (t (error "Tags alignment failed")))
+    (org-move-to-column col)))
+
+(defun counsel-org--set-tags ()
+  (counsel-org-change-tags
+   (if counsel-org-tags
+       (format ":%s:"
+               (mapconcat #'identity counsel-org-tags ":"))
+     "")))
+
+(defvar org-agenda-bulk-marked-entries)
+
+(declare-function org-get-at-bol "org")
+(declare-function org-agenda-error "org-agenda")
+
+(defun counsel-org-tag-action (x)
+  (if (member x counsel-org-tags)
+      (progn
+        (setq counsel-org-tags (delete x counsel-org-tags)))
+    (unless (equal x "")
+      (setq counsel-org-tags (append counsel-org-tags (list x)))
+      (unless (member x ivy--all-candidates)
+        (setq ivy--all-candidates (append ivy--all-candidates (list x))))))
+  (let ((prompt (counsel-org-tag-prompt)))
+    (setf (ivy-state-prompt ivy-last) prompt)
+    (setq ivy--prompt (concat "%-4d " prompt)))
+  (cond ((memq this-command '(ivy-done
+                              ivy-alt-done
+                              ivy-immediate-done))
+         (if (eq major-mode 'org-agenda-mode)
+             (if (null org-agenda-bulk-marked-entries)
+                 (let ((hdmarker (or (org-get-at-bol 'org-hd-marker)
+                                     (org-agenda-error))))
+                   (with-current-buffer (marker-buffer hdmarker)
+                     (goto-char hdmarker)
+                     (counsel-org--set-tags)))
+               (let ((add-tags (copy-sequence counsel-org-tags)))
+                 (dolist (m org-agenda-bulk-marked-entries)
+                   (with-current-buffer (marker-buffer m)
+                     (save-excursion
+                       (goto-char m)
+                       (setq counsel-org-tags
+                             (delete-dups
+                              (append (split-string (org-get-tags-string) ":" t)
+                                      add-tags)))
+                       (counsel-org--set-tags))))))
+           (counsel-org--set-tags)))
+        ((eq this-command 'ivy-call)
+         (delete-minibuffer-contents))))
+
+(defun counsel-org-tag-prompt ()
+  (format "Tags (%s): "
+          (mapconcat #'identity counsel-org-tags ", ")))
+
+(defvar org-setting-tags)
+(defvar org-last-tags-completion-table)
+(defvar org-tag-persistent-alist)
+(defvar org-tag-alist)
+(defvar org-complete-tags-always-offer-all-agenda-tags)
+
+(declare-function org-at-heading-p "org")
+(declare-function org-back-to-heading "org")
+(declare-function org-get-buffer-tags "org")
+(declare-function org-global-tags-completion-table "org")
+(declare-function org-agenda-files "org")
+(declare-function org-agenda-set-tags "org-agenda")
+
+;;;###autoload
+(defun counsel-org-tag ()
+  "Add or remove tags in org-mode."
+  (interactive)
+  (save-excursion
+    (if (eq major-mode 'org-agenda-mode)
+        (if org-agenda-bulk-marked-entries
+            (setq counsel-org-tags nil)
+          (let ((hdmarker (or (org-get-at-bol 'org-hd-marker)
+                              (org-agenda-error))))
+            (with-current-buffer (marker-buffer hdmarker)
+              (goto-char hdmarker)
+              (setq counsel-org-tags
+                    (split-string (org-get-tags-string) ":" t)))))
+      (unless (org-at-heading-p)
+        (org-back-to-heading t))
+      (setq counsel-org-tags (split-string (org-get-tags-string) ":" t)))
+    (let ((org-setting-tags t)
+          (org-last-tags-completion-table
+           (append org-tag-persistent-alist
+                   (or org-tag-alist (org-get-buffer-tags))
+                   (and
+                    (or org-complete-tags-always-offer-all-agenda-tags
+                        (eq major-mode 'org-agenda-mode))
+                    (org-global-tags-completion-table
+                     (org-agenda-files))))))
+      (ivy-read (counsel-org-tag-prompt)
+                (lambda (str &rest _unused)
+                  (delete-dups
+                   (all-completions str 'org-tags-completion-function)))
+                :history 'org-tags-history
+                :action 'counsel-org-tag-action
+                :caller 'counsel-org-tag))))
+
+;;;###autoload
+(defun counsel-org-tag-agenda ()
+  "Set tags for the current agenda item."
+  (interactive)
+  (let ((store (symbol-function 'org-set-tags)))
+    (unwind-protect
+         (progn
+           (fset 'org-set-tags
+                 (symbol-function 'counsel-org-tag))
+           (org-agenda-set-tags nil nil))
+      (fset 'org-set-tags store))))
+
+;;** `counsel-tmm'
+(defvar tmm-km-list nil)
+(declare-function tmm-get-keymap "tmm")
+(declare-function tmm--completion-table "tmm")
+(declare-function tmm-get-keybind "tmm")
+
+(defun counsel-tmm-prompt (menu)
+  "Select and call an item from the MENU keymap."
+  (let (out
+        choice
+        chosen-string)
+    (setq tmm-km-list nil)
+    (map-keymap (lambda (k v) (tmm-get-keymap (cons k v))) menu)
+    (setq tmm-km-list (nreverse tmm-km-list))
+    (setq out (ivy-read "Menu bar: " (tmm--completion-table tmm-km-list)
+                        :require-match t
+                        :sort nil))
+    (setq choice (cdr (assoc out tmm-km-list)))
+    (setq chosen-string (car choice))
+    (setq choice (cdr choice))
+    (cond ((keymapp choice)
+           (counsel-tmm-prompt choice))
+          ((and choice chosen-string)
+           (setq last-command-event chosen-string)
+           (call-interactively choice)))))
+
+(defvar tmm-table-undef)
+
+;;;###autoload
+(defun counsel-tmm ()
+  "Text-mode emulation of looking and choosing from a menubar."
+  (interactive)
+  (require 'tmm)
+  (run-hooks 'menu-bar-update-hook)
+  (setq tmm-table-undef nil)
+  (counsel-tmm-prompt (tmm-get-keybind [menu-bar])))
+
+;;** `counsel-yank-pop'
+(defun counsel--yank-pop-truncate (str)
+  (condition-case nil
+      (let* ((lines (split-string str "\n" t))
+             (n (length lines))
+             (first-match (cl-position-if
+                           (lambda (s) (string-match ivy--old-re s))
+                           lines))
+             (beg (max 0 (- first-match
+                            counsel-yank-pop-truncate-radius)))
+             (end (min n (+ first-match
+                            counsel-yank-pop-truncate-radius
+                            1)))
+             (seq (cl-subseq lines beg end)))
+        (if (null first-match)
+            (error "Could not match %s" str)
+          (when (> beg 0)
+            (setcar seq (concat "[...] " (car seq))))
+          (when (< end n)
+            (setcar (last seq)
+                    (concat (car (last seq)) " [...]")))
+          (mapconcat #'identity seq "\n")))
+    (error str)))
+
+(defun counsel--yank-pop-format-function (cand-pairs)
+  (ivy--format-function-generic
+   (lambda (str)
+     (mapconcat
+      (lambda (s)
+        (ivy--add-face s 'ivy-current-match))
+      (split-string
+       (counsel--yank-pop-truncate str) "\n" t)
+      "\n"))
+   (lambda (str)
+     (counsel--yank-pop-truncate str))
+   cand-pairs
+   "\n"))
+
+(defun counsel-yank-pop-action (s)
+  "Insert S into the buffer, overwriting the previous yank."
+  (with-ivy-window
+    (delete-region ivy-completion-beg
+                   ivy-completion-end)
+    (insert (substring-no-properties s))
+    (setq ivy-completion-end (point))))
+
+;;;###autoload
+(defun counsel-yank-pop ()
+  "Ivy replacement for `yank-pop'."
+  (interactive)
+  (if (eq last-command 'yank)
+      (progn
+        (setq ivy-completion-end (point))
+        (setq ivy-completion-beg
+              (save-excursion
+                (search-backward (car kill-ring))
+                (point))))
+    (setq ivy-completion-beg (point))
+    (setq ivy-completion-end (point)))
+  (let ((candidates (cl-remove-if
+                     (lambda (s)
+                       (or (< (length s) 3)
+                           (string-match "\\`[\n[:blank:]]+\\'" s)))
+                     (delete-dups kill-ring))))
+    (let ((ivy-format-function #'counsel--yank-pop-format-function)
+          (ivy-height 5))
+      (ivy-read "kill-ring: " candidates
+                :action 'counsel-yank-pop-action
+                :caller 'counsel-yank-pop))))
+
+;;** `counsel-imenu'
+(defvar imenu-auto-rescan)
+(declare-function imenu--subalist-p "imenu")
+(declare-function imenu--make-index-alist "imenu")
+
+(defun counsel-imenu-get-candidates-from (alist &optional prefix)
+  "Create a list of (key . value) from ALIST.
+PREFIX is used to create the key."
+  (cl-mapcan (lambda (elm)
+               (if (imenu--subalist-p elm)
+                   (counsel-imenu-get-candidates-from
+                    (cl-loop for (e . v) in (cdr elm) collect
+                         (cons e (if (integerp v) (copy-marker v) v)))
+                    ;; pass the prefix to next recursive call
+                    (concat prefix (if prefix ".") (car elm)))
+                 (let ((key (concat prefix (if prefix ".") (car elm))))
+                   (list (cons key
+                               ;; create a imenu candidate here
+                               (cons key (if (overlayp (cdr elm))
+                                             (overlay-start (cdr elm))
+                                           (cdr elm))))))))
+             alist))
+
+;;;###autoload
+(defun counsel-imenu ()
+  "Jump to a buffer position indexed by imenu."
+  (interactive)
+  (unless (featurep 'imenu)
+    (require 'imenu nil t))
+  (let* ((imenu-auto-rescan t)
+         (items (imenu--make-index-alist t))
+         (items (delete (assoc "*Rescan*" items) items)))
+    (ivy-read "imenu items:" (counsel-imenu-get-candidates-from items)
+              :preselect (thing-at-point 'symbol)
+              :require-match t
+              :action (lambda (candidate)
+                        (with-ivy-window
+                          ;; In org-mode, (imenu candidate) will expand child node
+                          ;; after jump to the candidate position
+                          (imenu candidate)))
+              :caller 'counsel-imenu)))
+
+;;** `counsel-list-processes'
+(defun counsel-list-processes-action-delete (x)
+  (delete-process x)
+  (setf (ivy-state-collection ivy-last)
+        (setq ivy--all-candidates
+              (delete x ivy--all-candidates))))
+
+(defun counsel-list-processes-action-switch (x)
+  (let* ((proc (get-process x))
+         (buf (and proc (process-buffer proc))))
+    (if buf
+        (switch-to-buffer buf)
+      (message "Process %s doesn't have a buffer" x))))
+
+;;;###autoload
+(defun counsel-list-processes ()
+  "Offer completion for `process-list'
+The default action deletes the selected process.
+An extra action allows to switch to the process buffer."
+  (interactive)
+  (list-processes--refresh)
+  (ivy-read "Process: " (mapcar #'process-name (process-list))
+            :require-match t
+            :action
+            '(1
+              ("o" counsel-list-processes-action-delete "kill")
+              ("s" counsel-list-processes-action-switch "switch"))
+            :caller 'counsel-list-processes))
+
+;;** `counsel-ace-link'
+(defun counsel-ace-link ()
+  "Use Ivy completion for `ace-link'."
+  (interactive)
+  (let (collection action)
+    (cond ((eq major-mode 'Info-mode)
+           (setq collection 'ace-link--info-collect)
+           (setq action 'ace-link--info-action))
+          ((eq major-mode 'help-mode)
+           (setq collection 'ace-link--help-collect)
+           (setq action 'ace-link--help-action))
+          ((eq major-mode 'woman-mode)
+           (setq collection 'ace-link--woman-collect)
+           (setq action 'ace-link--woman-action))
+          ((eq major-mode 'eww-mode)
+           (setq collection 'ace-link--eww-collect)
+           (setq action 'ace-link--eww-action))
+          ((eq major-mode 'compilation-mode)
+           (setq collection 'ace-link--eww-collect)
+           (setq action 'ace-link--compilation-action))
+          ((eq major-mode 'org-mode)
+           (setq collection 'ace-link--org-collect)
+           (setq action 'ace-link--org-action)))
+    (if (null collection)
+        (error "%S is not supported" major-mode)
+      (ivy-read "Ace-Link: " (funcall collection)
+                :action action
+                :require-match t
+                :caller 'counsel-ace-link))))
+;;** `counsel-expression-history'
+;;;###autoload
+(defun counsel-expression-history ()
+  "Select an element of `read-expression-history'.
+And insert it into the minibuffer. Useful during
+`eval-expression'"
+  (interactive)
+  (let ((enable-recursive-minibuffers t))
+    (ivy-read "Expr: " (delete-dups read-expression-history)
+              :action #'insert)))
+
+;;** `counsel-esh-history'
+(defun counsel--browse-history (elements)
+  "Use Ivy to navigate through ELEMENTS."
+  (setq ivy-completion-beg (point))
+  (setq ivy-completion-end (point))
+  (ivy-read "Symbol name: "
+            (delete-dups
+             (ring-elements elements))
+            :action #'ivy-completion-in-region-action))
+
+(defvar eshell-history-ring)
+
+;;;###autoload
+(defun counsel-esh-history ()
+  "Browse Eshell history."
+  (interactive)
+  (require 'em-hist)
+  (counsel--browse-history eshell-history-ring))
+
+(defvar comint-input-ring)
+
+;;;###autoload
+(defun counsel-shell-history ()
+  "Browse shell history."
+  (interactive)
+  (require 'comint)
+  (counsel--browse-history comint-input-ring))
+
+;;* Misc OS
+;;** `counsel-rhythmbox'
+(defvar helm-rhythmbox-library)
+(declare-function helm-rhythmbox-load-library "ext:helm-rhythmbox")
+(declare-function dbus-call-method "dbus")
+(declare-function dbus-get-property "dbus")
+(declare-function helm-rhythmbox-song-uri "ext:helm-rhythmbox")
+(declare-function helm-rhythmbox-candidates "ext:helm-rhythmbox")
+
+(defun counsel-rhythmbox-enqueue-song (song)
+  "Let Rhythmbox enqueue SONG."
+  (let ((service "org.gnome.Rhythmbox3")
+        (path "/org/gnome/Rhythmbox3/PlayQueue")
+        (interface "org.gnome.Rhythmbox3.PlayQueue"))
+    (dbus-call-method :session service path interface
+                      "AddToQueue" (helm-rhythmbox-song-uri song))))
+
+(defvar counsel-rhythmbox-history nil
+  "History for `counsel-rhythmbox'.")
+
+(defun counsel-rhythmbox-current-song ()
+  "Return the currently playing song title."
+  (ignore-errors
+    (let* ((entry (dbus-get-property
+                   :session
+                   "org.mpris.MediaPlayer2.rhythmbox"
+                   "/org/mpris/MediaPlayer2"
+                   "org.mpris.MediaPlayer2.Player"
+                   "Metadata"))
+           (artist (caar (cadr (assoc "xesam:artist" entry))))
+           (album (cl-caadr (assoc "xesam:album" entry)))
+           (title (cl-caadr (assoc "xesam:title" entry))))
+      (format "%s - %s - %s" artist album title))))
+
+;;;###autoload
+(defun counsel-rhythmbox ()
+  "Choose a song from the Rhythmbox library to play or enqueue."
+  (interactive)
+  (unless (require 'helm-rhythmbox nil t)
+    (error "Please install `helm-rhythmbox'"))
+  (unless helm-rhythmbox-library
+    (helm-rhythmbox-load-library)
+    (while (null helm-rhythmbox-library)
+      (sit-for 0.1)))
+  (ivy-read "Rhythmbox: "
+            (helm-rhythmbox-candidates)
+            :history 'counsel-rhythmbox-history
+            :preselect (counsel-rhythmbox-current-song)
+            :action
+            '(1
+              ("p" helm-rhythmbox-play-song "Play song")
+              ("e" counsel-rhythmbox-enqueue-song "Enqueue song"))
+            :caller 'counsel-rhythmbox))
+;;** `counsel-linux-app'
+(defvar counsel-linux-apps-alist nil
+  "List of data located in /usr/share/applications.")
+
+(defvar counsel-linux-apps-faulty nil
+  "List of faulty data located in /usr/share/applications.")
+
+(defun counsel-linux-apps-list ()
+  (let ((files
+         (delete
+          ".." (delete
+                "." (file-expand-wildcards "/usr/share/applications/*.desktop")))))
+    (dolist (file (cl-set-difference files (append (mapcar 'car counsel-linux-apps-alist)
+                                                   counsel-linux-apps-faulty)
+                                     :test 'equal))
+      (with-temp-buffer
+        (insert-file-contents (expand-file-name file "/usr/share/applications"))
+        (let (name comment exec)
+          (goto-char (point-min))
+          (if (re-search-forward "^Name *= *\\(.*\\)$" nil t)
+              (setq name (match-string 1))
+            (error "File %s has no Name" file))
+          (goto-char (point-min))
+          (when (re-search-forward "^Comment *= *\\(.*\\)$" nil t)
+            (setq comment (match-string 1)))
+          (goto-char (point-min))
+          (when (re-search-forward "^Exec *= *\\(.*\\)$" nil t)
+            (setq exec (match-string 1)))
+          (if (and exec (not (equal exec "")))
+              (add-to-list
+               'counsel-linux-apps-alist
+               (cons (format "% -45s: %s%s"
+                             (propertize exec 'face 'font-lock-builtin-face)
+                             name
+                             (if comment
+                                 (concat " - " comment)
+                               ""))
+                     file))
+            (add-to-list 'counsel-linux-apps-faulty file))))))
+  counsel-linux-apps-alist)
+
+(defun counsel-linux-app-action-default (desktop-shortcut)
+  "Launch DESKTOP-SHORTCUT."
+  (call-process-shell-command
+   (format "gtk-launch %s" (file-name-nondirectory desktop-shortcut))))
+
+(defun counsel-linux-app-action-file (desktop-shortcut)
+  "Launch DESKTOP-SHORTCUT with a selected file."
+  (let* ((entry (rassoc desktop-shortcut counsel-linux-apps-alist))
+         (short-name (and entry
+                          (string-match "\\([^ ]*\\) " (car entry))
+                          (match-string 1 (car entry))))
+         (file (and short-name
+                    (read-file-name
+                     (format "Run %s on: " short-name)))))
+    (if file
+        (call-process-shell-command
+         (format "gtk-launch %s %s"
+                 (file-name-nondirectory desktop-shortcut)
+                 file))
+      (user-error "cancelled"))))
+
+(ivy-set-actions
+ 'counsel-linux-app
+ '(("f" counsel-linux-app-action-file "run on a file")))
+
+;;;###autoload
+(defun counsel-linux-app ()
+  "Launch a Linux desktop application, similar to Alt-<F2>."
+  (interactive)
+  (ivy-read "Run a command: " (counsel-linux-apps-list)
+            :action #'counsel-linux-app-action-default
+            :caller 'counsel-linux-app))
+
+;;** `counsel-mode'
+(defvar counsel-mode-map
+  (let ((map (make-sparse-keymap)))
+    (dolist (binding
+              '((execute-extended-command . counsel-M-x)
+                (describe-bindings . counsel-descbinds)
+                (describe-function . counsel-describe-function)
+                (describe-variable . counsel-describe-variable)
+                (find-file . counsel-find-file)
+                (imenu . counsel-imenu)
+                (load-library . counsel-load-library)
+                (load-theme . counsel-load-theme)
+                (yank-pop . counsel-yank-pop)))
+      (define-key map (vector 'remap (car binding)) (cdr binding)))
+    map)
+  "Map for `counsel-mode'. Remaps built-in functions to counsel
+replacements.")
+
+(defcustom counsel-mode-override-describe-bindings nil
+  "Whether to override `describe-bindings' when `counsel-mode' is
+active."
+  :group 'ivy
+  :type 'boolean)
+
+;;;###autoload
+(define-minor-mode counsel-mode
+  "Toggle Counsel mode on or off.
+Turn Counsel mode on if ARG is positive, off otherwise. Counsel
+mode remaps built-in emacs functions that have counsel
+replacements. "
+  :group 'ivy
+  :global t
+  :keymap counsel-mode-map
+  :lighter " counsel"
+  (if counsel-mode
+      (when (and (fboundp 'advice-add)
+                 counsel-mode-override-describe-bindings)
+        (advice-add #'describe-bindings :override #'counsel-descbinds))
+    (when (fboundp 'advice-remove)
+      (advice-remove #'describe-bindings #'counsel-descbinds))))
+
+(provide 'counsel)
+
+;;; counsel.el ends here
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/doc/Changelog.org
@@ -0,0 +1,1186 @@
+#+OPTIONS: toc:nil
+* 0.6.0
+** Fixes
+*** =swiper-avy= should use only the current window
+Not all windows. See [[https://github.com/abo-abo/swiper/issues/117][#117]].
+*** fix wrap-around for =ivy-next-line=
+See [[https://github.com/abo-abo/swiper/issues/118][#118]].
+*** =swiper-avy= should do nothing for empty input
+See [[https://github.com/abo-abo/avy/issues/50][#50]].
+*** =ivy-alt-done= should require TRAMP if necessary
+See [[https://github.com/abo-abo/swiper/pull/145][#145]].
+*** =swiper-query-replace= shouldn't miss the first occurrence
+See [[https://github.com/abo-abo/swiper/pull/144][#144]].
+*** =swiper= should not deactivate mark
+*** =ivy-mode= should not switch to TRAMP for certain input
+See [[https://github.com/abo-abo/swiper/pull/145][#145]].
+*** =counsel-find-file= should work better with TRAMP
+"/ssh:foo" should not be cut off
+See [[https://github.com/abo-abo/swiper/pull/145][#145]].
+*** =counsel-find-file= supports Windows drive letters
+See [[https://github.com/abo-abo/swiper/pull/155][#155]].
+*** =counsel-file-file= should work better with files that contain "~"
+See [[https://github.com/abo-abo/swiper/pull/157][#157]].
+*** =counsel-M-x= should respect =ivy-format-function=
+See [[https://github.com/abo-abo/swiper/pull/150][#150]].
+*** =counsel-git-grep= should position better on exit
+See [[https://github.com/abo-abo/swiper/pull/153][#153]].
+*** =ivy-mode= should re-scale text to minibuffer height
+See [[https://github.com/abo-abo/swiper/pull/151][#151]].
+*** =counsel-unicode-char= should use action-style call
+See [[https://github.com/abo-abo/swiper/pull/160][#160]].
+*** =ivy-read= should allow % in prompt string
+See [[https://github.com/abo-abo/swiper/pull/171][#171]].
+*** =ivy-call= should execute in proper window
+See [[https://github.com/abo-abo/swiper/pull/176][#176]].
+** New Features
+*** =ivy-mode=
+**** Open an Info file on the file system
+When in =Info-mode=, press ~g~ and select either "(./)" or "(../)" to
+switch to file name completion. That file will be opened with Info.
+**** Account for =minibuffer-depth-indication-mode=
+If you have =minibuffer-depth-indication-mode= on, the minibuffer
+prompt will indicate the current depth.
+See [[https://github.com/abo-abo/swiper/pull/134][#134]].
+**** Add fuzzy matching function
+To enable fuzzy matching, set your =ivy-re-builders-alist= accordingly:
+#+begin_src elisp
+(setq ivy-re-builders-alist
+      '((t . ivy--regex-fuzzy)))
+#+end_src
+See [[https://github.com/abo-abo/swiper/pull/136][#136]].
+
+See also [[https://github.com/abo-abo/swiper/pull/142][#142]] for toggling fuzzy matching with ~C-o m~.
+**** =case-fold-search= optimization
+Bind case-fold-search to t when the input is all lower-case:
+
+- input "the" matches both "the" and "The".
+- input "The" matches only "The".
+
+See [[https://github.com/abo-abo/swiper/pull/166][#166]].
+**** Allow to see the candidate index a la =anzu= via =ivy-count-format=
+To have this feature, use something like this:
+#+begin_src elisp
+(setq ivy-count-format "(%d/%d) ")
+#+end_src
+See [[https://github.com/abo-abo/swiper/pull/167][#167]].
+
+You can also set this to "", if you don't want any count, see [[https://github.com/abo-abo/swiper/pull/188][#188]].
+**** Allow to add additional exit points for any command
+Example for =ivy-switch-to-buffer=:
+#+begin_src elisp
+(ivy-set-actions
+ 'ivy-switch-buffer
+ '(("k"
+    (lambda (x)
+      (kill-buffer x)
+      (ivy--reset-state ivy-last))
+    "kill")
+   ("j"
+    ivy--switch-buffer-other-window-action
+    "other")))
+#+end_src
+
+After this:
+
+- use ~M-o k~ to kill a buffer
+- use ~M-o j~ to switch to a buffer in other window
+
+You can always use ~M-o o~ to access the default action. When there is
+only one action, ~M-o~ does the same as ~C-m~.
+
+See [[https://github.com/abo-abo/swiper/pull/164][#164]].
+
+
+
+
+
+
+
+
+*** =counsel-describe-function= and =counsel-decribe-variable=
+**** Add a binding to look up the symbol in info
+Press ~C-,~ to look up the symbol in info, instead of the default
+describe action.
+See [[https://github.com/abo-abo/swiper/pull/121][#121]].
+**** Handle symbol-at-point better in non-Elisp buffers
+See [[https://github.com/abo-abo/swiper/pull/126][#126]].
+*** =ivy-switch-buffer=
+**** New face =ivy-virtual=
+See [[https://github.com/abo-abo/swiper/pull/129][#129]].
+**** Deal better with invisible buffers
+See [[https://github.com/abo-abo/swiper/pull/135][#135]].
+**** Add custom keymap
+You can customize =ivy-switch-buffer-map=.
+
+See [[https://github.com/abo-abo/swiper/pull/164][#164]].
+**** Add extra actions
+Add a =kill-buffer= action, and =switch-to-buffer-other-window= action.
+*** =counsel-git-grep=
+**** Add Async
+Make it fully async: the process =git grep= will be killed and
+restarted on new input. This results in almost no keyboard delay.
+**** Own history variable
+*** =swiper=
+**** Own history variable
+Having own history variable allows to get more use of ~M-p~, ~M-n~ and ~C-r~.
+*** =counsel-el=
+**** Switch to action-style call
+This allows to make use of ~C-M-n~ and ~C-M-p~.
+*** =counsel-locate=
+**** Add Async
+**** Add extra actions
+In addition to the default action of opening a file add:
+
+- =xdg-open= action
+- =dired= action
+
+Press ~M-o~ or ~C-o~ to access these actions.
+**** Add own history
+
+*** API
+**** Add :matcher
+A matcher is a function that accepts a regexp and a list of candidates
+and returns the filtered list of candidates.
+
+The default matcher is basically =cl-remove-if-not= + =string-match=.
+If you'd like to customize this, pass your own matcher.
+
+See =counsel-git-grep-matcher= for an example.
+**** Allow to customize the initial input for all commands
+Customize =ivy-initial-inputs-alist= for this.
+See [[https://github.com/abo-abo/swiper/pull/140][#140]].
+**** =ivy-sort-functions-alist= should also examine =this-command=
+**** :dynamic-collection is now a boolean
+Pass the collection function as the second var instead.
+
+** New Commands
+*** =ivy-call=
+Execute the current action for the current candidate without exiting
+the minibuffer.  Bound to ~C-M-m~ or ~M-RET~ or ~C-o g~.
+
+
+*** =counsel-find-file=
+Forward to =find-file= with Ivy completion.
+
+=ivy-next-line-and-call= as well as =ivy-resume= should work for this command.
+
+The variable =counsel-find-file-ignore-regexp= allows to ignore
+certain files, like dot files.  Input a leading dot to see all files.
+
+The variable =counsel-find-file-at-point= allows to automatically use
+=ffap=.  You also can do it manually with ~M-n~ when the point is on a file name.
+
+The variable =counsel-find-file-map= allows to customize the
+minibuffer key bindings for this command.
+
+Recommended binding:
+
+#+begin_src elisp
+(global-set-key (kbd "C-x C-f") 'counsel-find-file)
+#+end_src
+
+You can peek at files with ~C-M-n~ and ~C-M-p~.
+
+See [[https://github.com/abo-abo/swiper/issues/122][#122]] and [[https://github.com/abo-abo/swiper/issues/123][#123]].
+
+See [[https://github.com/abo-abo/swiper/pull/152][#152]] about ~M-n~, ~M-p~ and ~M-i~ switching directories when necessary.
+
+*** =ivy-recentf=
+Find a file on =recentf-list=.
+
+Note that if your set =ivy-use-virtual-buffers=, =recentf-list= is
+merged into candidates list for =ivy-switch-buffer=. But if you want
+it separately, you can use this command.
+
+See [[https://github.com/abo-abo/swiper/issues/124][#124]].
+*** =ivy-yank-word=
+Add word at point to minibuffer input.
+
+This is similar to what ~C-w~ does for =isearch=.  However it's bound
+to ~M-j~ instead of ~C-w~, since ~C-w~ is bound to =kill-region= - a
+useful command.
+
+See [[https://github.com/abo-abo/swiper/issues/125][#125]].
+*** =counsel-M-x=
+Forward to =execute-extended-command= with Ivy completion.
+The candidate list will also display the key binding for each bound command.
+
+This command will piggyback on =smex= for sorting, if =smex= is installed.
+
+Use =counsel-M-x-initial-input= to customize the initial input for
+this command.  By default, it's "^" - the regex character that
+indicates beginning of string.  This results in much faster matching,
+since you usually type the command name from the start.
+
+See [[https://github.com/abo-abo/swiper/pull/136][#136]] and [[https://github.com/abo-abo/swiper/pull/138][#138]].
+
+*** =hydra-ivy=
+Press ~C-o~ to toggle the Hydra for Ivy.
+It gives access to shorter bindings and many customizable options.
+
+Use ~C-o >~ to grow the minibuffer.
+Use ~C-o <~ to shrink the minibuffer.
+
+See [[https://github.com/abo-abo/swiper/pull/151][#151]].
+
+*** =ivy-toggle-calling=
+Toggle executing the current action each time a new candidate is selected.
+
+This command is bound to ~C-o c~.
+
+To explain how this is useful: ~C-M-m C-M-f C-M-f C-M-f~  is equivalent to ~C-o cjjj~.
+
+*** =ivy-insert-current=
+Inserts the current candidate into the minibuffer.
+
+Press ~M-i~ if you want something close to the current candidate. You
+can follow up with an edit and select.
+
+I find this very useful when creating new files with a similar name to
+the existing file: ~C-x C-f M-i~ + a bit of editing is very fast.
+
+See [[https://github.com/abo-abo/swiper/pull/141][#141]].
+
+*** =counsel-load-theme=
+Forward to =load-theme= with Ivy completion. Allows to rapidly try themes (e.g. with ~C-M-n~).
+
+*** =ivy-reverse-i-search=
+Allow to recursively match history with ~C-r~.
+
+I like this command from bash shell. The usual way to search through
+history is with ~M-p~ and ~M-n~.  Using =ivy-reverse-i-search= will
+open a recursive completion session with the current history as the
+candidates.
+*** =counsel-rhythmbox=
+[[http://oremacs.com/2015/07/09/counsel-rhythmbox/][Control Rhythmbox from Emacs.]]
+*** =ivy-dispatching-done=
+Select an action for the current candidate and execute it. Bound to ~M-o~.
+
+Some commands that support ~M-o~:
+
+- =counsel-rhythmbox=
+- =counsel-describe-function=
+- =counsel-describe-variable=
+- =ivy-switch-buffer=
+- =counsel-locate=
+
+*** =counsel-org-tag=
+Forward to =org-set-tags= with Ivy completion.
+
+Selecting any tag each time will toggle it on/off.
+The current list of selected tags will be displayed in the prompt.
+
+See [[https://github.com/abo-abo/swiper/pull/177][#177]] and [[https://github.com/abo-abo/swiper/pull/91][#91]].
+
+*** =counsel-org-tag-agenda=
+Forward to =org-agenda-set-tags= with Ivy completion.
+See [[https://github.com/abo-abo/swiper/pull/177][#177]].
+
+*** =counsel-ag=
+Interactively =ag= using Ivy completion.
+
+*** =counsel-recoll=
+Use =recoll= with Ivy completion.
+See [[http://oremacs.com/2015/07/27/counsel-recoll/][Using Recoll desktop search database with Emacs]].
+
+Install recoll with =sudo apt-get install recoll=.
+
+*** =swiper-from-isearch=
+Start =swiper= from the current =isearch= input.
+
+*** =ivy-immediate-done=
+Use this command to exit the minibuffer choosing not the current
+candidate, but the current text.  Bound to ~C-M-j~ or ~C-u C-j~.
+
+See [[https://github.com/abo-abo/swiper/pull/183][#183]].
+
+* 0.7.0
+** Fixes
+*** Fix :dynamic-collection not being sorted
+*** When :initial-input contains a plus, escape it
+See [[https://github.com/abo-abo/swiper/issues/195][#195]].
+*** Set line-spacing to 0 in the minibuffer
+See [[https://github.com/abo-abo/swiper/issues/198][#198]].
+*** Enlarge the minibuffer window if the candidate list doesn't fit
+See [[https://github.com/abo-abo/swiper/issues/198][#198]] and [[https://github.com/abo-abo/swiper/issues/161][#161]] and [[https://github.com/abo-abo/swiper/issues/220][#220]].
+*** Fix minibuffer collapsing to one line
+See [[https://github.com/abo-abo/swiper/issues/237][#237]], [[https://github.com/abo-abo/swiper/issues/229][#229]] and [[https://github.com/abo-abo/swiper/issues/77][#77]].
+*** Use minibuffer-allow-text-properties
+Allows =ivy-read= to return a propertized string.
+*** Improve ~C-g~ out of a long-running async process
+Use =counsel-delete-process= as =:unwind=.
+*** Don't regexp-quote :preselect
+See [[https://github.com/abo-abo/swiper/issues/245][#245]].
+*** Fix ivy-partial for fuzzy completion
+See [[https://github.com/abo-abo/swiper/issues/266][#266]].
+*** ivy-resume should pass :caller
+See [[https://github.com/abo-abo/swiper/issues/245][#245]].
+*** Fix the regression in perfect match logic
+See [[https://github.com/abo-abo/swiper/issues/270][#270]].
+*** Fix pasting file paths on Windows
+*** ~C-j~ should no stop completion for a pasted file path
+*** ~C-M-j~ should use =ivy--directory=
+When completing file names, expand the file name properly.
+See [[https://github.com/abo-abo/swiper/issues/275][#275]].
+*** Use a specific blend method for dark themes
+See [[https://github.com/abo-abo/swiper/issues/278][#278]].
+*** Fix one-off bug in =ivy-scroll-up-command= and =ivy-scroll-down-command=
+*** ~M-o~ shouldn't set the action permanently
+So now it's possible to e.g. =counsel-describe-function= -> ~M-o d~ ->
+=ivy-resume= -> ~M-o o~ -> =ivy-resume= -> ~M-o i~.
+*** Fix swiper preselect issue with similar or identical lines
+See [[https://github.com/abo-abo/swiper/issues/290][#290]].
+*** Make ivy-completing-read handle history as cons
+See [[https://github.com/abo-abo/swiper/issues/295][#295]].
+*** Perform string-match in the original buffer
+The syntax for whitespace, separators etc. is different for modes.  See [[https://github.com/abo-abo/swiper/issues/298][#298]].
+** New Features
+*** =swiper=
+**** Make line numbers into display properties
+Each candidate is now a single space plus the original string.  The
+display property of the single space holds the line number. This means
+that it's no longer possible to match line numbers in queries, which
+is a good thing if you're searching for numbers.
+**** Extend =swiper-font-lock-ensure=
+Add =mu4e-view-mode=, =mu4e-headers-mode=, =help-mode=,
+=elfeed-show-mode=, =emms-stream-mode=, =debbugs-gnu-mode=,
+=occur-mode=, =occur-edit-mode=, =bongo-mode=, =eww-mode=, =vc-dir-mode=.
+**** Add support for =evil-jumper/backward=
+See [[https://github.com/abo-abo/swiper/issues/268][#268]].
+**** Make compatible with =visual-line-mode=
+=swiper= will split the lines when =visual-line-mode= is on.  This is
+convenient for small buffers. For large buffers, it can be very slow,
+since =visual-line-mode= is slow.
+See [[https://github.com/abo-abo/swiper/issues/227][#227]].
+**** Add =swiper-toggle-face-matching=
+Bound to ~C-c C-f~.
+At each start of =swiper=, the face at point will be stored.
+Use this command to toggle matching only the candidates with that face.
+See [[https://github.com/abo-abo/swiper/issues/288][#288]].
+**** =push-mark= only if exited the minibuffer
+~C-M-n~ and ~C-M-p~ will no longer push mark and annoy with messages.
+**** =ivy-resume= should restore the buffer for =swiper=
+See [[https://github.com/abo-abo/swiper/issues/302][#302]].
+**** Enable recursive =swiper= calls
+While you =swiper= buffer-1, you can switch out of the minibuffer into
+buffer-2 and call =swiper= again.  Exiting the second minibuffer will
+restore the first minibuffer.
+
+To use this, you need to enable recursive minibuffers.
+#+begin_src elisp
+(setq enable-recursive-minibuffers t)
+#+end_src
+
+It's also useful to indicate the current depth:
+
+#+begin_src elisp
+(minibuffer-depth-indicate-mode 1)
+#+end_src
+
+See [[https://github.com/abo-abo/swiper/issues/309][#309]].
+**** Fix for =twittering-mode=
+The =field= text property is now removed before inserting text into
+the minibuffer. This fixes the =swiper= problems with
+=twittering-mode=. See [[https://github.com/abo-abo/swiper/issues/310][#310]].
+
+
+
+
+*** =ivy=
+**** Add manual
+In the current state, the manual covers the most basic topics, like
+the minibuffer key bindings and the regexp builders.
+**** Make <left> and <right> behave as in fundamental-mode
+**** Truncate minibuffer prompts longer than window-width
+See [[https://github.com/abo-abo/swiper/issues/240][#240]].
+**** ~C-M-n~ should not leave the minibuffer
+Make sure that the minibuffer window remains selected as long as the
+completion hasn't finished.  For example, ~<f1> f~ to call
+=counsel-describe-function=, input "forward" and spam ~C-M-n~ to read
+the doc for each function that starts with "forward". The =*Help*=
+window popup would move the window focus, but this change moves it
+back to the minibuffer.
+**** Add =flx= sorting
+See [[https://github.com/abo-abo/swiper/issues/207][#207]].
+Since flx is costly, move the caching to an earlier point. This means
+immediate return for when the input hasn't changed, i.e. for ~C-n~ or
+~C-p~. When =flx= is installed, and =(eq ivy--regex-function 'ivy--regex-fuzzy)=
+for current function (through =ivy-re-builders-alist=), then sort the final candidates with
+=ivy--flx-sort=.
+
+In the worst case, when some error pops up, return the same list. In
+the best case sort the =cands= that all match =name= by closeness to
+=name=.
+
+How to use:
+1. Have =flx= installed - =(require 'flx)= should succeed.
+2. Configure =ivy-re-builders-alist= appropriately to use =ivy--regex-fuzzy=.
+
+For example:
+
+#+begin_src elisp
+(setq ivy-re-builders-alist
+      '((t . ivy--regex-fuzzy)))
+#+end_src
+**** Support hash tables
+Since =all-completions= also works for hash tables, no reason not to support them.
+**** Improve documentation of =ivy-count-format=
+Now possible to set it with Customize.
+**** Add =ivy-index-functions-alist=
+Customize this to decide how the index, i.e. the currently selected
+candidate, is updated with new input.
+For example, one strategy is not reset it to 0 after each change.
+
+Another strategy, used for =swiper=, is to try to select the first
+appropriate candidate after (inclusive) the first previously selected
+candidate. This way, if you're typing something that matches what is
+currently selected, the selection won't change.
+
+See [[https://github.com/abo-abo/swiper/issues/253][#253]].
+**** Add =ivy-virtual-abbreviate=
+The mode of abbreviation for virtual buffer names.
+**** Add =ivy-case-fold-search=
+Used to override =case-fold-search=. See [[https://github.com/abo-abo/swiper/issues/259][#259]].
+**** Add feedback for long-running async processes
+Each time 0.5s pass after the last input, if the external process
+hasn't finished yet, update minibuffer with the amount of candidates
+collected so far. This is useful to see that long running commands
+like =counsel-locate= or =counsel-ag= (when in a very large directory)
+aren't stuck.
+**** Promote =ivy-extra-directories= to defcustom
+**** Promote =ivy-sort-function-alist= to defcustom
+**** ~M-n~ should prefer url at point to symbol at point
+**** ~C-x C-f M-n~ calls =ffap-url-fetcher= when at URL
+**** Highlight modified file buffers with =ivy-modified-buffer= face
+This new face is blank by default, but you can use e.g.:
+#+begin_src elisp
+(custom-set-faces
+ '(ivy-modified-buffer ((t (:background "#ff7777")))))
+#+end_src
+**** Work with =enable-recursive-minibuffers=
+Store the old =ivy-last= in case =ivy-read= is called while inside the
+minibuffer.  Restore it after =ivy-call=.
+**** Allow user-specified matched candidate sorting
+New defcustom =ivy-sort-matches-functions-alist=.
+See [[https://github.com/abo-abo/swiper/issues/269][#269]] [[https://github.com/abo-abo/swiper/issues/265][#265]] [[https://github.com/abo-abo/swiper/issues/213][#213]].
+
+By default, Ivy doesn't sort the matched candidates, they remain in
+the same order as in the original collection. This option is the
+default, since it's fast and simple.
+
+A small problem with this approach is that we usually want prefix
+matches to be displayed first. One solution to this is to input "^" to
+see only the prefix matches.
+
+Now, another solution is to can set:
+#+begin_src elisp
+(setq ivy-sort-matches-functions-alist
+      '((t . ivy--prefix-sort)))
+#+end_src
+
+Here's another example of using this defcustom:
+#+begin_src elisp
+(add-to-list
+     'ivy-sort-matches-functions-alist
+     '(read-file-name-internal . ivy--sort-files-by-date))
+#+end_src
+
+After this, during file name completion, most recently changed files
+will be ahead.
+**** =ivy-display-style=
+Adds fancy highlighting to the minibuffer.
+See [[https://github.com/abo-abo/swiper/issues/212][#212]], [[https://github.com/abo-abo/swiper/issues/217][#217]], .
+*** =ivy-hydra=
+**** Bind ~t~ to =toggle-truncate-lines=
+See [[https://github.com/abo-abo/swiper/issues/214][#214]].
+**** Bind ~a~ to =ivy-read-action=
+*** =ivy-switch-buffer=
+**** Make ~M-o r~ rename the buffer instead of switching.
+See [[https://github.com/abo-abo/swiper/issues/233][#233]].
+*** =counsel-locate=
+**** Allow customizing locate options
+See =counsel-locate-options=.
+The current setting is:
+#+begin_src elisp
+(setq counsel-locate-options '("-i" "--regex"))
+#+end_src
+**** Support OSX
+Use =open= instead of =xdg-open=.  Modify =counsel-locate-options= for
+OSX, since there =locate= doesn't support =--regex=.
+**** Use single quotes for the regex
+See [[https://github.com/abo-abo/swiper/issues/194][#194]].
+**** Add initial-input argument
+See [[https://github.com/abo-abo/swiper/issues/289][#289]].
+*** =counsel-org-tag=
+**** Now works in agenda
+See [[https://github.com/abo-abo/swiper/issues/200][#200]].
+*** =counsel-unicode-char=
+**** Add own history
+*** =counsel-M-x=
+**** Add "definition" action
+Use ~M-o d~ to jump to definition.
+**** Show =current-prefix-arg= in the prompt
+See [[https://github.com/abo-abo/swiper/issues/287][#287]].
+*** =counsel-find-file=
+**** Input '/sudo::' goes to current directory instead of root's home
+See [[https://github.com/abo-abo/swiper/issues/283][#283]].
+**** Fix directory validity check
+See [[https://github.com/abo-abo/swiper/issues/283][#283]] [[https://github.com/abo-abo/swiper/issues/284][#284]].
+**** Improve TRAMP support
+Selecting items after ~//~ now works properly.
+*** =counsel-git-grep=
+**** Use prefix arg to specify the shell command.
+Remember to use ~M-i~ to insert the current candidate into the
+minibuffer.
+
+See [[https://github.com/abo-abo/swiper/issues/244][#244]].
+**** Allow =counsel-git-grep= -> =ivy-occur= -> =wgrep=
+Using ~C-c C-o~ (=ivy-occur=) while in =counsel-git-grep= will produce
+a =wgrep=-compatible buffer.
+**** =ivy-occur= gives full candidates
+This means that the =" | head -n 200"= speed-up isn't used and full
+candidates are returned.
+*** =counsel--find-symbol=
+**** Allow to jump back with pop-tag-mark
+Using ~C-.~ in:
+
+- =counsel-describe-function=
+- =counsel-describe-variable=
+- =counsel-load-library=
+
+will change the current buffer. The buffer and point can be restored
+with ~M-*~ (=pop-tag-mark=).
+
+I also recommend this binding:
+
+#+begin_src elisp
+(global-set-key (kbd "M-,") 'pop-tag-mark)
+#+end_src
+**** Resolve the name clash better
+When the symbol is both bound and fbound, prefer the fbound one,
+unless the =:caller= is =counsel-describe-variable=.
+*** =counsel-ag=
+**** Add =initial-directory=
+Support alternative initial directory which helps other packages call
+this function with their unique starting directory.
+**** Fix on Windows
+Using the "--vimgrep" argument improves things.
+** New Commands
+*** =ivy-occur=
+Bound to ~C-c C-o~. Store the current completion session to its own
+buffer.  You can have an unlimited amount of these buffers.
+*** =ivy-avy=
+Bound to ~C-'~.
+
+Speeds up selecting a candidate that's currently visible in the minibuffer.
+*** =ivy-kill-ring-save=
+Bound to ~M-w~.
+
+When the region is active, call =kill-ring-save=.  Otherwise, store
+all selected candidates to the kill ring.
+*** =ivy-dispatching-call=
+Bound to ~C-M-o~.
+
+This is a non-exiting version of ~M-o~ (=ivy-dispatching-done=).
+*** =ivy-read-action=
+Bound to ~C-M-a~. Select the current action. Don't call it yet.
+*** =swiper-multi=
+Use =swiper= in multiple buffers.
+See [[https://github.com/abo-abo/swiper/issues/182][#182]].
+
+Basic usage tips for selecting multiple buffers:
+
+- Use ~C-M-m~ (=ivy-call=) to add or remove one more buffer without exiting.
+- Use ~C-m~ (=ivy-done=) to add one last buffer.
+- Or use ~C-M-j~ (=ivy-immediate-done=) to finish without adding more buffers.
+- Hold ~C-M-n~ (=ivy-next-line-and-call=) to add a lot of buffers at once.
+*** =swiper-mc=
+Open multiple cursors at all selected candidates.
+*** =swiper-all=
+New command to launch =swiper= for all open file buffers.  Note that
+this can be excruciatingly slow if you don't clean up your buffer list
+often.
+*** =counsel-grep=
+This is essentially =swiper= for huge files. It's not as smooth as
+=swiper= for small files, but has a faster startup and faster matching
+for files that measure in megabytes.
+*** =counsel-git-grep-query-replace=
+Bound to ~M-q~. Perform =query-replace= on all matches in all buffers.
+*** =counsel-jedi=
+Complete Python symbols using Jedi.
+*** =counsel-cl=
+Complete Common Lisp symbols using SLIME.
+*** =counsel-yank-pop=
+Give completion for inserting from the kill ring.
+See =counsel-yank-pop-truncate= defcustom and [[https://github.com/abo-abo/swiper/issues/218][#218]].
+
+* 0.8.0
+** Package rename
+Due to popular demand, =swiper-0.7.0= is succeeded by =ivy-0.8.0= in GNU
+ELPA. The contents of the package don't change, only the name. Make
+sure to remove the =~/.emacs.d/elpa/swiper-0.7.0= directory if you
+have it and ~M-x~ =package-install ivy=.
+** Documentation
+HTML documentation is available at http://oremacs.com/swiper/.
+
+Texinfo documentation is in doc/ivy.texi.
+
+The HTML file shouldn't be in this repository to avoid bloat, instead
+it's in the gh-pages branch at
+https://github.com/abo-abo/swiper/tree/gh-pages.
+** Fixes
+*** ivy-read
+**** Fix recursive minibuffer exit with ~C-g~
+Make it so e.g. ~C-h f C-h v C-g~ goes back to the =describe-function= selection.
+**** Ensure the return result
+In some cases, =read-from-minibuffer= will return the whole minibuffer
+contents (i.e. all available candidates). Return =ivy--current= instead.
+**** Properly support matching ignoring order
+See [[https://github.com/abo-abo/swiper/issues/296][#296]] and [[https://github.com/abo-abo/swiper/issues/329][#329]].
+**** Insert intermediate candidates during async completions
+See [[https://github.com/abo-abo/swiper/issues/340][#340]].
+**** Initialize =ivy-last= to empty state
+See [[https://github.com/abo-abo/swiper/issues/352][#352]].
+**** Fix extra actions for =completing-read=
+See [[https://github.com/abo-abo/swiper/issues/337][#337]].
+**** Support a list of symbols as collection
+See [[https://github.com/abo-abo/swiper/issues/375][#375]].
+**** Define =setq-local= and =defvar-local= unless defined
+With this commit, Ivy works on emacs-24.2.
+See [[https://github.com/abo-abo/swiper/issues/415][#415]].
+**** Make ~M-o~ not modify the action
+See [[https://github.com/abo-abo/swiper/issues/454][#454]].
+**** Make sure user keybindings are respected
+See [[https://github.com/abo-abo/swiper/issues/466][#466]].
+**** Fix =read-file-name= with a specified dir
+See [[https://github.com/abo-abo/swiper/issues/475][#475]].
+**** Don't highlight the match in the file part
+See [[https://github.com/abo-abo/swiper/issues/483][#483]].
+**** Add a few tests for alists
+*** ivy-occur
+**** Fix =default-directory=
+This way, =next-error= etc will work properly.
+*** ivy--resize-minibuffer-to-fit
+**** Fix for small delta
+See [[https://github.com/abo-abo/swiper/issues/339][#339]].
+**** Check =frame-root-window-p=
+See [[https://github.com/abo-abo/swiper/issues/380][#380]].
+*** ivy-completing-read
+**** Use =completing-read-default= for tmm
+See [[https://github.com/abo-abo/swiper/issues/316][#316]].
+*** ivy--regex-plus
+**** Recognize ! at the beginning of the str
+See [[https://github.com/abo-abo/swiper/issues/318][#318]].
+**** Prettify a bit
+See [[https://github.com/abo-abo/swiper/issues/344][#344]].
+**** Don't consider =\\(?...\)= a group
+See [[https://github.com/abo-abo/swiper/issues/393][#393]].
+*** ivy--get-window
+**** Always return a valid window
+Even if =state= is invalid.
+*** ivy--recompute-index
+**** Update =cl-position= logic
+See [[https://github.com/abo-abo/swiper/issues/207][#207]].
+*** ivy-reverse-i-search
+**** Fix due to recursive update
+See [[https://github.com/abo-abo/swiper/issues/323][#323]].
+*** ivy--reset-state
+**** Don't null =initial-input=
+This is specifically for ='read-file-name-internal= collection.  The
+input needs to be set to nil for e.g. =rgrep=, which supplies the
+*absolute* path as =initial-input=, resulting in a mess.
+
+For now, don't set input to nil if =:action= was passed to =ivy-read=.
+See [[https://github.com/abo-abo/swiper/issues/336][#336]].
+**** Don't deactivate region
+See [[https://github.com/abo-abo/swiper/issues/377][#377]].
+*** ivy-completion-in-region
+**** Use =completion-all-completions=
+See [[https://github.com/abo-abo/swiper/issues/341][#341]].
+**** Optimize for 1 candidate
+When there's only one candidate, call the action immediately.
+**** Add feedback for 1 candidate
+When the sole completion is the same as the input, notify the user.
+See [[https://github.com/abo-abo/swiper/issues/350][#350]].
+**** Bind =completion-ignore-case=
+It's convenient to have it the same value as =case-fold-search=.
+*** ivy-read-action
+**** Give enough minibuffer space
+See [[https://github.com/abo-abo/swiper/issues/402][#402]].
+**** Allow to customize the action hint formatter
+See [[https://github.com/abo-abo/swiper/issues/469][#469]].
+*** ivy-count-format
+**** Fix for nil value
+See [[https://github.com/abo-abo/swiper/issues/349][#349]].
+*** ivy-switch-buffer
+**** Don't fall back to =switch-to-buffer=
+See [[https://github.com/abo-abo/swiper/issues/410][#410]].
+*** ivy-next-history-element
+**** No "\\_<" for dynamic-collection
+"\\_<" regex is Emacs-specific and should only be done if
+=:dynamic-collection= is nil.  It is nil for =counsel-git-grep= with
+repositories < 20000 lines, but non-nil for larger ones.
+
+Fixes [[https://github.com/abo-abo/swiper/issues/409][#409]].
+*** ivy-occur-press
+**** Pulse no longer
+Repeated pulses within a short time span resulted in horrible window
+flickering.
+*** ivy-resume
+**** Add a guard against null =:action=
+*** ivy-avy
+**** Make ~C-g~ cancel gracefully
+See abo-abo/avy[[https://github.com/abo-abo/swiper/issues/140][#140]].
+*** ivy-dispatching-done
+Allow to exit with no candidates.
+*** swiper
+**** Improve for multiple occurrences on one line
+See [[https://github.com/abo-abo/swiper/issues/314][#314]].
+**** Fix "backward" search
+When none of the previous candidates after the point match the current
+input, instead of returning 0, return the index of the last matching
+candidate.  This is a good choice, because that candidate is the
+closest to the point of the initial search start.
+
+See [[https://github.com/abo-abo/swiper/issues/319][#319]].
+**** Return point
+See [[https://github.com/abo-abo/swiper/issues/370][#370]].
+**** Update =regexp-search-ring=
+See [[https://github.com/abo-abo/swiper/issues/89][#89]].
+**** Always remove '(field) text property
+Allows to search better in modes for shell interaction.
+*** swiper-font-lock-ensure
+**** Add modes
+Add bongo-library-mode, bongo-playlist-mode, sauron-mode.
+
+See [[https://github.com/abo-abo/swiper/issues/19][#19]].
+**** Don't fail when font-lock is off
+See [[https://github.com/abo-abo/swiper/issues/400][#400]].
+*** swiper--multi-candidates
+**** Add check for =make-string=
+See [[https://github.com/abo-abo/swiper/issues/481][#481]].
+*** counsel--async-sentinel
+**** Fix issue with =ivy--regex-ignore-order=
+See [[https://github.com/abo-abo/swiper/issues/342][#342]].
+**** Re-display when no cands
+**** Recognize error codes other than 1
+See [[https://github.com/abo-abo/swiper/issues/394][#394]].
+*** consel-git
+**** Fix window selection.
+Use =with-ivy-window=, so that each new file chosen with e.g. ~C-M-n~ is
+selected in the same window.
+*** counsel-recoll
+**** Add =:unwind=
+See [[https://github.com/abo-abo/swiper/issues/403][#403]].
+*** compilation warnings
+See [[https://github.com/abo-abo/swiper/issues/324][#324]].
+** New Features
+*** ivy-read
+**** Use =flx= for highlighting fuzzy matches
+See [[https://github.com/abo-abo/swiper/issues/207][#207]].
+**** Simplify the signature for =:dynamic-collection= functions
+When given =:dynamic-collection=, assume the collection function only
+needs one argument - the string input.
+**** Modify ~M-n~ prediction when region is active
+When the region is active and ~M-n~ is called, insert the region
+contents into the minibuffer and deactivate the region. The region
+deactivation is done for =swiper=, to make it easier to search for
+multiple words or a subword.
+**** Allow to compose collections
+***** Example 1: async collection
+Stack =recentf= on top of =counsel-locate=:
+
+#+begin_src elisp
+(defun small-test ()
+  (cl-subseq recentf-list 0 10))
+
+(ivy-set-sources
+ 'counsel-locate
+ '((small-test)
+   (original-source)))
+#+end_src
+
+Here, (original-source) represents the async candidates of
+=counsel-locate=. All extra sources are static - each function is called
+once to generate a list of strings, which will be filtered later.
+
+The order matters, so you can have e.g.:
+
+#+begin_src elisp
+(ivy-set-sources
+ 'counsel-locate
+ '((original-source)
+   (small-test)))
+#+end_src
+
+See [[https://github.com/abo-abo/swiper/issues/373][#373]].
+***** Example 2: sync collection
+#+begin_src elisp
+(defun my-extra-source ()
+  (append
+   (when (eq 'Git (vc-backend (buffer-file-name)))
+     (list "git1" "git2" "git3"))
+   (when (file-exists-p "doc/Changelog.org")
+     (list (propertize "doc/Changelog.org" 'face '(:background "red"))))))
+
+(defun my-find-file ()
+  (interactive)
+  (ivy-read "Find file: " 'read-file-name-internal
+            :action (lambda (x)
+                      (with-ivy-window
+                        (find-file (expand-file-name x ivy--directory))))
+            :require-match 'confirm-after-completion
+            :history 'file-name-history
+            :caller 'my-find-file))
+
+(ivy-set-sources
+ 'my-find-file
+ '((my-extra-source)
+   (original-source)))
+#+end_src
+
+The function =my-find-file= knows nothing about the extra source, it's
+only purpose is to introduce a =:caller= to attach things to, as to not
+to mess up e.g. =counsel-find-file=.
+
+The function =my-extra-source= gets called once in =ivy-read= via
+=ivy--reset-state=. It takes no args and returns a list of strings,
+possibly empty.
+**** Improve documentation UI
+Bind ~C-h m~ to =ivy-help=.
+
+=ivy-help-file= is a new defvar pointing to the ivy-help.org file.
+
+Bind ~D~ in =hydra-ivy= to go to hydra's definition.
+
+See [[https://github.com/abo-abo/swiper/issues/376][#376]] and [[https://github.com/abo-abo/swiper/issues/379][#379]].
+**** Add ignore pattern toggling
+~C-c C-a~ is bound to =ivy-toggle-ignore= - a new command to toggle ignore
+patterns (user-configured filtering). If the ignore patterns are
+enabled and there are zero candidates after ignoring, display the ones
+that match the current text. This feature currently works for
+=ivy-switch-buffer= and =counsel-find-file=.
+
+See [[https://github.com/abo-abo/swiper/issues/369][#369]].
+*** ivy-mode
+**** Set =completion-in-region-function=
+See [[https://github.com/abo-abo/swiper/issues/331][#331]].
+**** Improve ~M-n~ for ='read-file-name-internal=
+*** ivy-set-occur
+Allows to customize =ivy-occur= per-command.
+**** =ivy-switch-buffer=
+Add custom occur.
+See [[https://github.com/abo-abo/swiper/issues/438][#438]] and [[https://github.com/abo-abo/swiper/issues/440][#440]].
+*** ivy-occur-mode
+**** New commands on ~j~, ~k~, ~c~
+(ivy-occur-toggle-calling): New command bound to ~c~.
+(ivy-occur-next-line): New command bound to ~j~.
+(ivy-occur-previous-line): New command bound to ~k~.
+
+This makes =ivy-occur= much more convenient, instead of ~gjgjgjg~, just
+~cjjj~. Especially good for commands that change the contents of the
+other window, like =describe-function= or =counsel-git-grep=.
+
+Example:
+
+- ~C-h f~ (=describe-funtion=)
+- =run= (=self-insert-command=)
+- ~C-c C-o~ (=ivy-occur=); ~C-o u~ also works.
+- ~cjjjjkkkk~
+**** New command =ivy-occur-revert-buffer= on ~g~
+Does what e.g. =revert-buffer= does for *Help* buffers.
+
+Has special handling for =counsel-git-grep=, =counsel-ag= and
+=counsel-grep=: will run the shell command once more and reflect the
+updates in files.
+
+Move =ivy-occur-press= from ~g~ to ~f~.
+**** Improve the feedback for ~j~ and ~k~
+The overlays will be more responsive now.
+*** ivy-re-builders-alist
+**** Allow =this-command= to be a key
+Example:
+#+begin_src elisp
+(defun asdf ()
+  (interactive)
+  (completing-read "prompt: " '("abc" "abcd" "def")))
+
+(global-set-key (kbd "C-c t") 'asdf)
+
+(setq ivy-re-builders-alist
+      '(
+        (asdf . ivy--regex-fuzzy)
+        (t . ivy--regex-plus)))
+#+end_src
+This is useful for commands that you didn't write. For new commands
+that you write, consider using =ivy-read= and =:caller=.
+
+See [[https://github.com/abo-abo/swiper/issues/330][#330]].
+*** ivy-set-actions
+**** Call with =t= to affect all commands
+Example:
+
+#+begin_src elisp
+(ivy-set-actions
+ t
+ '(("i" insert "insert")))
+#+end_src
+
+Now an "insert" action will be available for all =ivy-read= sessions
+when pressing ~M-o~.
+
+See [[https://github.com/abo-abo/swiper/issues/337][#337]].
+*** ivy-faces
+New defcustom group.
+See [[https://github.com/abo-abo/swiper/issues/389][#389]].
+*** ivy-flx-limit
+New variable. Configure when =flx= is used.
+See [[https://github.com/abo-abo/swiper/issues/207][#207]].
+*** ivy-ignore-buffers
+New defcustom. See [[https://github.com/abo-abo/swiper/issues/366][#366]].
+*** ivy-inhibit-action
+New variable. See [[https://github.com/abo-abo/swiper/issues/363][#363]].
+*** ivy-do-completion-in-region
+New defcustom. See [[https://github.com/abo-abo/swiper/issues/367][#367]].
+*** ivy-fixed-height-minibuffer
+New defcustom.
+
+When non nil, fix the height of the minibuffer during ivy completion
+at =ivy-height=. This effectively sets the minimum height at this level
+and tries to ensure that it does not change depending on the number of
+candidates.
+
+See [[https://github.com/abo-abo/swiper/issues/353][#353]].
+*** ivy-set-display-transformer
+New API function.
+
+Now used by =switch-to-buffer= and =read-file-name=.
+
+See [[https://github.com/abo-abo/swiper/issues/399][#399]].
+*** ivy-ignore-buffers
+New defcustom similar to =ido-ignore-buffers=.
+
+See [[https://github.com/abo-abo/swiper/issues/382][#382]].
+*** ivy-add-newline-after-prompt
+New defcustom.
+
+See [[https://github.com/abo-abo/swiper/issues/451][#451]].
+*** ivy-switch-buffer
+**** Add virtual views
+=ivy-views= variable stores pre-defined views. Allows to set a window
+configuration with many buffers from =ivy-switch-buffer=.
+
+How to use: just set =ivy-views= appropriately. An example value is
+provided (but nulled, so that it's empty initially).
+*** ivy-use-ignore-default
+New defcustom
+
+See [[https://github.com/abo-abo/swiper/issues/477][#477]].
+*** swiper
+**** Improve =swiper-query-replace=
+To replace a symbol with a similar symbol,
+
+1. Press ~C-s M-n~ for =swiper= and select the symbol at point as input.
+2. Press ~M-q~ for =swiper-query-replace=
+3. Press ~M-n~ to yank the symbol to replace.
+4. Edit the replacement and ~RET~.
+
+Here step-3 was modified to yank e.g. "symbol" instead of
+"\_<symbol\_>" previously.
+
+*** swiper-font-lock-exclude
+New variable for major modes that misbehave with =font-lock-ensure=.
+See [[https://github.com/abo-abo/swiper/issues/346][#346]].
+*** swiper-all
+**** New auto-updates position
+See [[https://github.com/abo-abo/swiper/issues/401][#401]].
+*** counsel-mode
+A minor-mode that remaps built-in functions that have counsel
+replacements available.
+
+See [[https://github.com/abo-abo/swiper/issues/414][#414]].
+**** Allow use of describe-prefix-bindings
+See [[https://github.com/abo-abo/swiper/issues/441][#441]].
+*** counsel-find-file
+**** Add =initial-input=
+See [[https://github.com/abo-abo/swiper/issues/336][#336]].
+**** Change tramp prompt from "Find File: " to "user@host: "
+**** Bind =counsel-up-directory= to ~C-DEL~
+New function that moves up to the parent directory and at the same
+time preselects the current directory. This is useful for moving up
+and down a file tree quickly.
+
+See [[https://github.com/abo-abo/swiper/issues/343][#343]].
+**** Customize =M-n= action
+This feature allows to quickly visit Github issues from either
+=magit-commit-mode= or from a version-controlled file. The point has to
+be at the "#" char in e.g. "[[https://github.com/abo-abo/swiper/issues/123][#123]]", that represents an issue.
+
+It's possible to customize =ivy-ffap-url-functions= to do a similar
+thing for places other than Github.
+
+The ~C-x C-f M-n~ key binding will work better with =counsel-find-file=,
+for plain =find-file= it will open a =dired= buffer in addition to opening
+the URL.
+**** Can un-ignore dotfiles with a leading dot input
+When =ivy-text= starts with a dot, don't use
+=counsel-find-file-ignore-regexp=. The generic way to do this is with
+~C-c C-a~ (=ivy-toggle-ignore=), but this is faster and more convenient.
+
+See [[https://github.com/abo-abo/swiper/issues/408][#408]].
+**** Bind ~M-o f~ to =find-file-other-window=
+**** Correctly expand file name at point
+See [[https://github.com/abo-abo/swiper/issues/430][#430]].
+**** Add display transformer
+See [[https://github.com/abo-abo/swiper/issues/458][#458]].
+**** Add magic slash that changes the directory
+Update to the behavior: the slash ("/") will enter a directory even if
+its name isn't completely typed out if either:
+
+1. It's the only candidate.
+2. The candidate index isn't 0, i.e. "C-n" has been typed at least once.
+3. The input isn't "/".
+
+The above rules still allow to keep the old behavior with "//" moving
+to root and "/ssh:" opening tramp.
+
+This is an experimental feature, please report if it breaks someone's
+workflow.
+
+See [[https://github.com/abo-abo/swiper/issues/321][#321]] and [[https://github.com/abo-abo/swiper/issues/480][#480]].
+*** counsel-git-grep
+**** Bind ~C-c C-m~ to =counsel-git-grep-switch-cmd=
+The initial command always runs on all files.
+
+To run only on *.el files, ~C-c C-m~ followed by ~M-i~ =-- *.el=.
+To run on *.c and *.h files, ~C-c C-m~ followed by ~M-i~ =-- *.c *.h=.
+To switch to all files again, ~C-c C-m~ and select the appropriate
+entry.
+
+See [[https://github.com/abo-abo/swiper/issues/420][#420]].
+*** counsel-locate
+**** counsel-locate-cmd
+New defcustom that replaces =counsel-locate-options=.
+
+See [[https://github.com/abo-abo/swiper/issues/385][#385]].
+**** counsel-locate-cmd-mdfind
+New function.
+See [[https://github.com/abo-abo/swiper/issues/390][#390]].
+**** counsel-locate-cmd-es
+New function.
+See [[https://github.com/abo-abo/swiper/issues/426][#426]].
+*** counsel-yank-pop
+**** Truncate during display
+During the completion, only the context around the match will be shown.
+By default, the context is +2 lines above and +2 lines below the match.
+It can be adjusted with =counsel-yank-pop-truncate-radius=.
+Additionally, =ivy-height= is temporarily bound to 5 during completion.
+This way, the maximum minibuffer height should be 1+4*5=21 lines.
+
+See [[https://github.com/abo-abo/swiper/issues/315][#315]].
+*** counsel-unicode-char
+Display hex codes in left column.
+*** counsel-rhythmbox
+**** Preselect the current song
+*** counsel-ag
+**** =counsel-ag-base-command=
+Allows the command run by =counsel-ag-function= to be customized. There
+are several reasons to allow this: The vimgrep option is a recent
+addition; on windows it's more convenient to use pt; and the user
+might want to customize ignored files.
+
+Standard value:
+#+begin_src elisp
+(setq counsel-ag-base-command "ag --nocolor --nogroup %s -- .")
+#+end_src
+
+See [[https://github.com/abo-abo/swiper/issues/335][#335]].
+**** Add dir prompt for ~C-u~
+See [[https://github.com/abo-abo/swiper/issues/429][#429]].
+**** Add =counsel-ag-map=
+See [[https://github.com/abo-abo/swiper/issues/462][#462]].
+*** counsel-async-split-string-re
+New defcustom.
+*** counsel--async-cmd
+**** Add optional exit-code table
+This argument can be used to associate exit codes with the underlying
+reason. Used in counsel-ag-function to signal that an exit code of 1
+means that no matches were found.
+
+See [[https://github.com/abo-abo/swiper/issues/421][#421]].
+*** counsel-prompt-function
+New defcustom
+
+See [[https://github.com/abo-abo/swiper/issues/424][#424]] and [[https://github.com/abo-abo/swiper/issues/425][#425]].
+*** counsel-grep
+**** Reveal outlines
+Just like =swiper=.
+**** Should pick candidates closest to point
+Fixes the algorithm selecting the first matching candidate in case
+there are 0 matching candidates following point. Now the last matching
+candidate will be selected, resulting in less scrolling.
+**** Speed up x40 times
+The default shell command will not use =--ignore-case= switch for
+=grep=. It's a bit less convenient, but results in a huge speed-up.
+*** counsel-M-x
+**** Add help action
+Bound to ~M-o h~ by default.
+
+See [[https://github.com/abo-abo/swiper/issues/452][#452]].
+** New Commands
+*** =counsel-tmm=
+Completion for the menu bar items. For example:
+
+=counsel-tmm= -> =Options= -> =Set Default Font...=.
+
+Thanks to completion, the latter stages of the chain would look like: =op= ~RET~ =set= ~RET~.
+*** =counsel-imenu=
+Jump to a buffer position indexed by imenu.
+*** =counsel-decbinds=
+Show a list of all defined keys, and their definitions. Describe the
+selected candidate.
+See [[https://github.com/abo-abo/swiper/issues/332][#332]].
+*** =counsel-list-processes=
+Offer completion for =process-list=
+
+The default action deletes the selected process.  An extra action
+allows to switch to the process buffer.
+
+See [[https://github.com/abo-abo/swiper/issues/357][#357]] and [[https://github.com/abo-abo/swiper/issues/398][#398]].
+*** =ivy-switch-buffer-other-window=
+Remap =switch-to-buffer-other-window= to =ivy-switch-buffer-other-window= for =ivy-mode=.
+
+See [[https://github.com/abo-abo/swiper/issues/361][#361]].
+*** =counsel-git-stash=
+Search through all available git stashes.
+
+See [[https://github.com/abo-abo/swiper/issues/374][#374]].
+*** =counsel-git-log=
+Call the =git log --grep= shell command and search through the output.
+*** =counsel-pt=
+Grep for a string in the current directory using pt.
+
+See [[https://github.com/abo-abo/swiper/issues/434][#434]].
+*** =counsel-linux-app=
+Launch a Linux desktop application, similar to Alt-<F2>.
+
+See [[https://github.com/abo-abo/swiper/issues/446][#446]].
+*** =counsel-ace-link=
+Ivy completion for =ace-link=.
+*** =counsel-esh-history=
+Browse Eshell history.
+
+See [[https://github.com/abo-abo/swiper/issues/459][#459]].
+*** =counsel-shell-history=
+Browse shell history.
+*** =counsel-grep-or-swiper=
+New command: automatically use =swiper= for smaller buffers and
+=counsel-grep= for larger buffers.
+
+Adjust with:
+#+begin_src elisp
+(setq counsel-grep-swiper-limit 300000)
+#+end_src
+
+By default, the splitting predicate is 300K bytes in a file.
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/doc/ivy-help.org
@@ -0,0 +1,138 @@
+* Ivy Generic Help
+
+=ivy= is an Emacs incremental completion framework.
+
+- Narrow the list by typing some pattern,
+- Multiple patterns are allowed by separating with a space,
+- Select with ~C-n~ and ~C-p~, choose with ~RET~.
+
+** Help
+
+- ~C-h m~ :: Pop to this generic help buffer.
+
+** Basic Operations
+*** Key bindings for navigation
+
+- ~C-n~ (=ivy-next-line=) :: next candidate.
+- ~C-p~ (=ivy-previous-line=) :: previous candidate.
+- ~C-v~ (=ivy-scroll-up-command=) :: next page.
+- ~M-v~ (=ivy-scroll-down-command=) :: previous page.
+- ~M-<~ (=ivy-beginning-of-buffer=) :: first candidate.
+- ~M->~ (=ivy-end-of-buffer=) :: last candidate.
+
+*** Key bindings for single selection
+
+When selecting a candidate, an action is called on it. You can think
+of an action as a function that takes the selected candidate as an
+argument and does something with it.
+
+Ivy can offer several actions from which to choose. This can be
+independently composed with whether you want to end completion when
+the action is called. Depending on this, the short term is either
+"calling an action" or "exiting with action".
+
+~C-m~ or ~RET~ (=ivy-done=) - exit with the current action.
+
+~M-o~ (=ivy-dispatching-done=) - select an action and exit with it.
+
+~C-j~ (=ivy-alt-done=) - when the candidate is a directory, enter
+it. Otherwise, exit with the current action.
+
+~TAB~ (=ivy-partial-or-done=) - attempt partial completion, extending
+the current input as much as possible. ~TAB TAB~ is the same as ~C-j~.
+
+~C-M-j~ (=ivy-immediate-done=) - exit with the current action, calling
+it on the /current input/ instead of the current candidate. This is
+useful especially when creating new files or directories - often the
+input will match an existing file, which you don't want to select.
+
+~C-'~ (=ivy-avy=) - select a candidate from the current page with avy
+and exit with the current action.
+
+** Advanced Operations
+*** Key bindings for multiple selection
+
+For repeatedly applying multiple actions or acting on multiple
+candidates, Ivy does not close the minibuffer between commands. It
+keeps the minibuffer open for applying subsequent actions.
+
+Adding an extra meta key to the normal key chord invokes the special
+version of the regular commands that enables applying multiple
+actions.
+
+~C-M-m~ (=ivy-call=) is the non-exiting version of ~C-m~ (=ivy-done=).
+
+~C-M-n~ (=ivy-next-line-and-call=) combines ~C-n~ and ~C-M-m~.
+
+~C-M-p~ (=ivy-previous-line-and-call=) combines ~C-p~ and ~C-M-m~.
+
+~C-M-o~ (=ivy-dispatching-call=) is a non-exiting version of ~M-o~
+(=ivy-dispatching-done=).
+
+*** Key bindings that alter the minibuffer input
+
+~M-n~ (=ivy-next-history-element=) select the next history element or
+symbol/URL at point.
+
+~M-p~ (=ivy-previous-history-element=) select the previous history
+element.
+
+~C-r~ (=ivy-reverse-i-search=) start a recursive completion session to
+select a history element.
+
+~M-i~ (=ivy-insert-current=) insert the current candidate into the
+minibuffer. Useful for copying and renaming files, for example: ~M-i~
+to insert the original file name string, edit it, and then ~C-m~ to
+complete the renaming.
+
+~M-j~ (=ivy-yank-word=) insert the sub-word at point into the
+minibuffer.
+
+~S-SPC~ (=ivy-restrict-to-matches=) deletes the current input, and
+resets the candidates list to the currently restricted matches. This
+is how Ivy provides narrowing in successive tiers.
+
+*** Other key bindings
+
+~M-w~ (=ivy-kill-ring-save=) copies the selected candidates to the
+kill ring; when the region is active, copies the active region.
+
+*** Saving the current completion session to a buffer
+
+~C-c C-o~ (=ivy-occur=) saves the current candidates to a new buffer;
+the list is active in the new buffer.
+
+~RET~ or ~mouse-1~ in the new buffer calls the appropriate action on
+the selected candidate.
+
+Ivy has no limit on the number of active buffers like these.
+
+Ivy takes care of making these buffer names unique. It applies
+descriptive names, for example: =*ivy-occur counsel-describe-variable
+"function$*=.
+
+*** Global key bindings
+
+=ivy-resume= recalls the state of the completion session just before
+its last exit. Useful after an accidental ~C-m~ (=ivy-done=).
+Recommended global binding: ~C-c C-r~.
+
+*** Hydra in the minibuffer
+
+~C-o~ (=hydra-ivy/body=) invokes Hydra menus with key shortcuts.
+
+When in Hydra, ~C-o~ or ~i~ resumes editing.
+
+Hydra reduces key strokes, for example: ~C-n C-n C-n C-n~ is ~C-o
+jjjj~ in Hydra. Besides certain shorter keys, Hydra shows useful info
+such as case folding and the current action.
+
+Additionally, here are the keys that are otherwise not bound:
+
+- ~<~ and ~>~ adjust the height of the minibuffer.
+- ~c~ (=ivy-toggle-calling=) - toggle calling the current action each
+  time a different candidate is selected.
+- ~m~ (=ivy-toggle-fuzzy=) - toggle regex matcher.
+- ~w~ and ~s~ scroll the actions list.
+
+Minibuffer editing is disabled when Hydra is active.
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/doc/ivy-ox.el
@@ -0,0 +1,193 @@
+;;; ivy-ox.el --- org-export settings for Ivy
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;* ox-texinfo
+(require 'ox-texinfo)
+(org-export-define-backend 'texinfo
+  '((bold . org-texinfo-bold)
+    (center-block . org-texinfo-center-block)
+    (clock . org-texinfo-clock)
+    (code . org-texinfo-kbd)
+    (drawer . org-texinfo-drawer)
+    (dynamic-block . org-texinfo-dynamic-block)
+    (entity . org-texinfo-entity)
+    (example-block . org-texinfo-example-block)
+    (export-block . org-texinfo-export-block)
+    (export-snippet . org-texinfo-export-snippet)
+    (fixed-width . org-texinfo-fixed-width)
+    (footnote-definition . org-texinfo-footnote-definition)
+    (footnote-reference . org-texinfo-footnote-reference)
+    (headline . org-texinfo-headline)
+    (inline-src-block . org-texinfo-inline-src-block)
+    (inlinetask . org-texinfo-inlinetask)
+    (italic . org-texinfo-italic)
+    (item . org-texinfo-item)
+    (keyword . org-texinfo-keyword)
+    (line-break . org-texinfo-line-break)
+    (link . org-texinfo-link)
+    (node-property . org-texinfo-node-property)
+    (paragraph . org-texinfo-paragraph)
+    (plain-list . org-texinfo-plain-list)
+    (plain-text . org-texinfo-plain-text)
+    (planning . org-texinfo-planning)
+    (property-drawer . org-texinfo-property-drawer)
+    (quote-block . org-texinfo-quote-block)
+    (radio-target . org-texinfo-radio-target)
+    (section . org-texinfo-section)
+    (special-block . org-texinfo-special-block)
+    (src-block . org-texinfo-src-block)
+    (statistics-cookie . org-texinfo-statistics-cookie)
+    (subscript . org-texinfo-subscript)
+    (superscript . org-texinfo-superscript)
+    (table . org-texinfo-table)
+    (table-cell . org-texinfo-table-cell)
+    (table-row . org-texinfo-table-row)
+    (target . org-texinfo-target)
+    (template . org-texinfo-template)
+    (timestamp . org-texinfo-timestamp)
+    (verbatim . org-texinfo-code)
+    (verse-block . org-texinfo-verse-block))
+  :filters-alist
+  '((:filter-headline . org-texinfo--filter-section-blank-lines)
+    (:filter-parse-tree . org-texinfo--normalize-headlines)
+    (:filter-section . org-texinfo--filter-section-blank-lines))
+  :menu-entry
+  '(?i "Export to Texinfo"
+    ((?t "As TEXI file" org-texinfo-export-to-texinfo)
+     (?i "As INFO file" org-texinfo-export-to-info)
+     (?o "As INFO file and open"
+      (lambda (a s v b)
+        (if a (org-texinfo-export-to-info t s v b)
+          (org-open-file (org-texinfo-export-to-info nil s v b)))))))
+  :options-alist
+  '((:texinfo-filename "TEXINFO_FILENAME" nil nil t)
+    (:texinfo-class "TEXINFO_CLASS" nil org-texinfo-default-class t)
+    (:texinfo-header "TEXINFO_HEADER" nil nil newline)
+    (:texinfo-post-header "TEXINFO_POST_HEADER" nil nil newline)
+    (:subtitle "SUBTITLE" nil nil parse)
+    (:subauthor "SUBAUTHOR" nil nil newline)
+    (:texinfo-dircat "TEXINFO_DIR_CATEGORY" nil nil t)
+    (:texinfo-dirtitle "TEXINFO_DIR_TITLE" nil nil t)
+    (:texinfo-dirdesc "TEXINFO_DIR_DESC" nil nil t)
+    (:texinfo-printed-title "TEXINFO_PRINTED_TITLE" nil nil t)
+    ;; Other variables.
+    (:texinfo-classes nil nil org-texinfo-classes)
+    (:texinfo-format-headline-function nil nil org-texinfo-format-headline-function)
+    (:texinfo-node-description-column nil nil org-texinfo-node-description-column)
+    (:texinfo-active-timestamp-format nil nil org-texinfo-active-timestamp-format)
+    (:texinfo-inactive-timestamp-format nil nil org-texinfo-inactive-timestamp-format)
+    (:texinfo-diary-timestamp-format nil nil org-texinfo-diary-timestamp-format)
+    (:texinfo-link-with-unknown-path-format nil nil org-texinfo-link-with-unknown-path-format)
+    (:texinfo-tables-verbatim nil nil org-texinfo-tables-verbatim)
+    (:texinfo-table-scientific-notation nil nil org-texinfo-table-scientific-notation)
+    (:texinfo-def-table-markup nil nil org-texinfo-def-table-markup)
+    (:texinfo-text-markup-alist nil nil org-texinfo-text-markup-alist)
+    (:texinfo-format-drawer-function nil nil org-texinfo-format-drawer-function)
+    (:texinfo-format-inlinetask-function nil nil org-texinfo-format-inlinetask-function)))
+
+(defun org-texinfo-kbd (code _contents _info)
+  "Transcode a CODE object from Org to Texinfo."
+  (format "@kbd{%s}" (org-element-property :value code)))
+
+(defun org-texinfo-plain-list (plain-list contents info)
+  "Transcode a PLAIN-LIST element from Org to Texinfo.
+CONTENTS is the contents of the list.  INFO is a plist holding
+contextual information."
+  (let* ((attr (org-export-read-attribute :attr_texinfo plain-list))
+         (indic (or (plist-get attr :indic)
+                    (plist-get info :texinfo-def-table-markup)))
+         (table-type (plist-get attr :table-type))
+         (type (org-element-property :type plain-list))
+         (list-type (cond
+                      ((eq type 'ordered) "enumerate")
+                      ((eq type 'unordered) "itemize")
+                      ((member table-type '("ftable" "vtable")) table-type)
+                      (t "table"))))
+    (if (equal list-type "table")
+        (mapconcat (lambda (s)
+                     (cond ((string-match "\\`User Option @code{\\(.*\\)}$" s)
+                            (format "@defopt %s\n%s\n@end defopt\n"
+                                    (match-string-no-properties 1 s)
+                                    (string-trim
+                                     (substring s (1+ (match-end 1))))))
+                           ((string-match "\\(.*\\)$" s)
+                            (let* ((line (match-string 1 s))
+                                   (body (string-trim
+                                          (substring s (1+ (match-end 1)))))
+                                   (symbol-index
+                                    (if (string-match "@code{\\(\\(?:ivy\\|swiper\\|counsel\\)-[^}]+\\)}" line)
+                                        (format "@vindex %s\n" (match-string 1 line))
+                                      ""))
+                                   (key-index
+                                    (apply #'concat
+                                           (mapcar
+                                            (lambda (s)
+                                              (format "@kindex %s\n" s))
+                                            (iox-extract-kbd line)))))
+                              (format "@subsubheading %s\n%s@indentedblock\n%s\n@end indentedblock"
+                                      line
+                                      (concat symbol-index
+                                              key-index)
+                                      body)))
+                           (t
+                            (concat "@subsubheading " s))))
+                   (split-string (substring-no-properties contents) "^@item " t)
+                   "\n")
+      (format "@%s\n%s@end %s"
+              (if (eq type 'descriptive) (concat list-type " " indic) list-type)
+              contents
+              list-type))))
+
+(defun iox-extract-kbd (str)
+  (let ((start 0)
+        res)
+    (while (string-match "@kbd{\\([^}]+\\)}" str start)
+      (setq start (match-end 0))
+      (push (match-string 1 str) res))
+    (nreverse res)))
+
+;;* ox-html
+(require 'ox-html)
+(setq org-html-validation-link nil)
+(setq org-html-postamble nil)
+(setq org-html-text-markup-alist
+      '((bold . "<b>%s</b>")
+        (code . "<kbd>%s</kbd>")
+        (italic . "<i>%s</i>")
+        (strike-through . "<del>%s</del>")
+        (underline . "<span class=\"underline\">%s</span>")
+        (verbatim . "<code>%s</code>")))
+(setq org-html-style-default nil)
+
+(defvar ivy-info-dir (file-name-directory
+                      (or load-file-name
+                          (buffer-file-name))))
+
+(defun info-ivy ()
+  (interactive)
+  (let ((buf (get-buffer "*info*")))
+    (when buf
+      (kill-buffer buf)))
+  (Info-find-node
+   (expand-file-name "ivy.info" ivy-info-dir)
+   "Top"))
+
+(provide 'ivy-ox)
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/doc/ivy.org
@@ -0,0 +1,1285 @@
+#+TITLE: Ivy User Manual
+#+AUTHOR: Oleh Krehel
+#+EMAIL: ohwoeowho@gmail.com
+#+LANGUAGE: en
+
+#+TEXINFO_DIR_CATEGORY: Emacs
+#+TEXINFO_DIR_TITLE: Ivy: (ivy).
+#+TEXINFO_DIR_DESC: Using Ivy for completion.
+#+SETUPFILE: ~/git/org-html-themes/setup/theme-readtheorg.setup
+#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="kbd-style.css"/>
+#+OPTIONS: H:6 num:6 toc:4
+#+STARTUP: indent
+* Setup                                                                               :noexport:
+#+BEGIN_SRC elisp :exports results :results silent
+(add-to-list 'load-path default-directory)
+(require 'ivy-ox)
+#+END_SRC
+* Writing this manual                                                                 :noexport:
+To highlight a section without introducing a new subheading use
+definition lists. The definition list "owns" the subsequent text if
+the text is indented by 5 spaces. Use ~C-q~ to indent the
+paragraphs. Start new paragraphs with 5 spaces indented. To separate
+definition lists from regular lists, use two newlines.
+
+A typical definition list:
+#+BEGIN_EXAMPLE
+- ~C-M-j~ (=ivy-immediate-done=) ::
+#+END_EXAMPLE
+The code and kbd part is recognized and added as =@vindex= and
+=@kindex= respectively.
+
+Use definition lists to declare a =@defopt= section for =defcustom=
+or =defvar=. For proper Texinfo export, use this form:
+
+#+BEGIN_EXAMPLE
+User Option =ivy-wrap= ::
+#+END_EXAMPLE
+
+Set =CUSTOM_ID= property to name each heading. For example, =worf='s
+~C-u L~. This will result in consistent HTML node names.
+
+Keep one empty line before each source block for proper Texinfo
+exports.
+* Copying
+:PROPERTIES:
+:COPYING:  t
+:CUSTOM_ID: copying
+:END:
+#+TEXINFO: @ifnottex
+Ivy manual, version 0.7.0
+
+Ivy is an interactive interface for completion in Emacs. Emacs uses
+completion mechanism in a variety of contexts: code, menus, commands,
+variables, functions, etc. Completion entails listing, sorting,
+filtering, previewing, and applying actions on selected items. When
+active, =ivy-mode= completes the selection process by narrowing
+available choices while previewing in the minibuffer. Selecting the
+final candidate is either through simple keyboard character inputs or
+through powerful regular expressions.
+#+TEXINFO: @end ifnottex
+
+Copyright (C) 2015 Free Software Foundation, Inc.
+
+#+BEGIN_QUOTE
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below.  A copy of the license
+is included in the section entitled ``GNU Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual.''
+#+END_QUOTE
+
+#+HTML: <a href="https://github.com/abo-abo/swiper/blob/master/doc/ivy.org">This manual source</a>
+* Introduction
+:PROPERTIES:
+:CUSTOM_ID: introduction
+:END:
+Ivy is for quick and easy selection from a list. When Emacs prompts
+for a string from a list of several possible choices, Ivy springs into
+action to assist in narrowing and picking the right string from a vast
+number of choices.
+
+Ivy strives for minimalism, simplicity, customizability and
+discoverability.
+
+- Minimalism ::
+     Uncluttered minibuffer is minimalism. Ivy shows the completion
+     defaults, the number of matches, and 10 candidate matches below
+     the input line. Customize =ivy-height= to adjust the number of
+     candidate matches displayed in the minibuffer.
+
+- Simplicity ::
+     Simplicity is about Ivy's behavior in the minibuffer. It is also
+     about the code interface to extend Ivy's functionality. The
+     minibuffer area behaves as close to =fundamental-mode= as
+     possible. ~SPC~ inserts a space, for example, instead of being
+     bound to the more complex =minibuffer-complete-word=. Ivy's code
+     uses easy-to-examine global variables; avoids needless
+     complications with branch-introducing custom macros.
+
+- Customizability ::
+     Customizability is about being able to use different methods and
+     interfaces of completion to tailor the selection process. For
+     example, adding a custom display function that points to a
+     selected candidate with =->=, instead of highlighting the
+     selected candidate with the =ivy-current-match= face. Or take the
+     customization of actions, say after the candidate function is
+     selected. ~RET~ uses =counsel-describe-function= to describe the
+     function, whereas ~M-o d~ jumps to that function's definition in
+     the code. The ~M-o~ prefix can be uniformly used with characters
+     like ~d~ to group similar actions.
+
+- Discoverability ::
+     Ivy displays easily discoverable commands through the hydra
+     facility.  ~C-o~ in the minibuffer displays a hydra menu. It
+     opens up within an expanded minibuffer area. Each menu item comes
+     with short documentation strings and highlighted one-key
+     completions. So discovering even seldom used keys is simply a
+     matter of ~C-o~ in the minibuffer while in the midst of the Ivy
+     interaction. This discoverability minimizes exiting Ivy interface
+     for documentation look-ups.
+
+* Installation
+:PROPERTIES:
+:CUSTOM_ID: installation
+:END:
+
+Install Ivy automatically through Emacs's package manager, or manually
+from Ivy's development repository.
+
+Emacs 24.3.1 is the oldest version to run Ivy. Emacs 24.5.1 is the
+oldest version that runs Ivy with fancy faces display.
+
+** Installing from Emacs Package Manager
+:PROPERTIES:
+:CUSTOM_ID: installing-from-emacs-package-manager
+:END:
+
+~M-x~ =package-install= ~RET~ =swiper= ~RET~
+
+Ivy is installed as part of =swiper= package. =swiper= is available
+from two different package archives, GNU ELPA and MELPA. For the
+latest stable version, use the GNU ELPA archives using the above M-x
+command.
+
+For current hourly builds, use the MELPA archives. See the code below
+for adding MELPA to the list of package archives:
+
+#+begin_src elisp
+(require 'package)
+(add-to-list 'package-archives
+             '("melpa" . "http://melpa.org/packages/"))
+#+end_src
+
+After this do ~M-x~ =package-refresh-contents= ~RET~, followed by
+~M-x~ =package-install= ~RET~ =swiper= ~RET~.
+
+For package manager details, see [[info:emacs#Packages]].
+
+** Installing from the Git repository
+:PROPERTIES:
+:CUSTOM_ID: installing-from-the-git-repository
+:END:
+
+- Why install from Git? ::
+
+    - No need to wait for MELPA's hourly builds
+    - Easy to revert to previous versions
+    - Contribute to Ivy's development; send patches; pull requests
+
+
+- Configuration steps ::
+     First clone the Swiper repository with:
+
+     #+begin_src sh
+     cd ~/git && git clone https://github.com/abo-abo/swiper
+     cd swiper && make compile
+     #+end_src
+
+     Second, add these lines to the Emacs init file:
+
+     #+begin_src elisp
+     (add-to-list 'load-path "~/git/swiper/")
+     (require 'ivy)
+     #+end_src
+
+     Then, update the code with:
+
+     #+begin_src sh
+     git pull
+     make
+     #+end_src
+
+* Getting started
+:PROPERTIES:
+:CUSTOM_ID: getting-started
+:END:
+First enable Ivy completion everywhere:
+
+#+begin_src elisp
+(ivy-mode 1)
+#+end_src
+
+Note: =ivy-mode= can be toggled on and off with ~M-x~ =ivy-mode=.
+** Basic customization
+:PROPERTIES:
+:CUSTOM_ID: basic-customization
+:END:
+Here are some basic settings particularly useful for new Ivy users:
+
+#+begin_src elisp
+(setq ivy-use-virtual-buffers t)
+(setq ivy-height 10)
+(setq ivy-count-format "(%d/%d) ")
+#+end_src
+
+If you want, you can go without any customizations at all. The above
+settings are the most bang for the buck in terms of customization.  So
+users that typically don't like customize a lot are advised to look at
+these settings first.
+
+For more advanced customizations, refer to =M-x describe-variable=
+documentation.
+
+* Key bindings
+:PROPERTIES:
+:CUSTOM_ID: key-bindings
+:END:
+** Global key bindings
+:PROPERTIES:
+:CUSTOM_ID: global-key-bindings
+:END:
+The recommended key bindings are:
+
+- Ivy-based interface to standard commands ::
+
+     #+begin_src elisp
+     (global-set-key (kbd "C-s") 'swiper)
+     (global-set-key (kbd "M-x") 'counsel-M-x)
+     (global-set-key (kbd "C-x C-f") 'counsel-find-file)
+     (global-set-key (kbd "<f1> f") 'counsel-describe-function)
+     (global-set-key (kbd "<f1> v") 'counsel-describe-variable)
+     (global-set-key (kbd "<f1> l") 'counsel-load-library)
+     (global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
+     (global-set-key (kbd "<f2> u") 'counsel-unicode-char)
+     #+end_src
+
+- Ivy-based interface to shell and system tools ::
+
+     #+begin_src elisp
+     (global-set-key (kbd "C-c g") 'counsel-git)
+     (global-set-key (kbd "C-c j") 'counsel-git-grep)
+     (global-set-key (kbd "C-c k") 'counsel-ag)
+     (global-set-key (kbd "C-x l") 'counsel-locate)
+     (global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
+     #+end_src
+
+- Ivy-resume and other commands ::
+
+     =ivy-resume= resumes the last Ivy-based completion.
+
+     #+begin_src elisp
+     (global-set-key (kbd "C-c C-r") 'ivy-resume)
+     #+end_src
+
+** Minibuffer key bindings
+:PROPERTIES:
+:CUSTOM_ID: minibuffer-key-bindings
+:END:
+
+#+VINDEX: ivy-minibuffer-map
+Ivy includes several minibuffer bindings, which are defined in the
+=ivy-minibuffer-map= keymap variable. The most frequently used ones
+are described here.
+
+=swiper= or =counsel-M-x= add more key bindings through the =keymap=
+argument to =ivy-read=. These keys, also active in the minibuffer, are
+described under their respective commands.
+
+A key feature of =ivy-minibuffer-map= is its full editing capability
+where the familiar ~C-a~, ~C-f~, ~M-d~, ~M-DEL~, ~M-b~, ~M-w~, ~C-k~,
+~C-y~ key bindings work the same as in =fundamental-mode=.
+
+*** Key bindings for navigation
+:PROPERTIES:
+:CUSTOM_ID: key-bindings-for-navigation
+:END:
+
+- ~C-n~ (=ivy-next-line=) selects the next candidate
+- ~C-p~ (=ivy-previous-line=) selects the previous candidate
+- ~M-<~ (=ivy-beginning-of-buffer=) selects the first candidate
+- ~M->~ (=ivy-end-of-buffer=) selects the last candidate
+- ~C-v~ (=ivy-scroll-up-command=) scrolls up by =ivy-height= lines
+- ~M-v~ (=ivy-scroll-down-command=) scrolls down by =ivy-height= lines
+
+
+- User Option =ivy-wrap= ::
+     Specifies the wrap-around behavior for ~C-n~ and ~C-p~. When
+     =ivy-wrap= is set to =t=, =ivy-next-line= and =ivy-previous-line=
+     will cycle past the last and the first candidates respectively.
+
+     Warp-around behavior is off by default.
+
+- User Option =ivy-height= ::
+     Use this option to adjust the minibuffer height, which also
+     affects scroll size when using ~C-v~ and ~M-v~ key bindings.
+
+     =ivy-height= is 10 lines by default.
+
+*** Key bindings for single selection, action, then exit minibuffer
+:PROPERTIES:
+:CUSTOM_ID: key-bindings-for-single-selection-action-then-exit-minibuffer
+:END:
+
+Ivy can offer several actions from which to choose which action to
+run. This "calling an action" operates on the selected candidate. For
+example, when viewing a list of files, one action could open it for
+editing, one to view it, another to invoke a special function, and so
+on. Custom actions can be added to this interface. The precise action
+to call on the selected candidate can be delayed until after the
+narrowing is completed. No need to exit the interface if unsure which
+action to run. This delayed flexibility and customization of actions
+extends usability of lists in Emacs.
+
+- ~C-m~ or ~RET~ (=ivy-done=) ::
+     Calls the default action and then exits the minibuffer.
+
+- ~M-o~ (=ivy-dispatching-done=) ::
+     Presents valid actions from which to choose. When only one action
+     is available, there is no difference between ~M-o~ and ~C-m~.
+
+- ~C-j~ (=ivy-alt-done=) ::
+     When completing file names, selects the current directory
+     candidate and starts a new completion session there. Otherwise,
+     it is the same as =ivy-done=.
+
+- ~TAB~ (=ivy-partial-or-done=) ::
+     Attempts partial completion, extending current input as much as
+     possible. ~TAB TAB~ is the same as ~C-j~ (=ivy-alt-done=).
+
+     Example ERT test:
+
+     #+begin_src elisp
+     (should
+      (equal (ivy-with
+              '(progn
+                (ivy-read "Test: " '("can do" "can't, sorry" "other"))
+                ivy-text)
+              "c <tab>")
+             "can"))
+     #+end_src
+
+- ~C-M-j~ (=ivy-immediate-done=) ::
+     Exits with /the current input/ instead of /the current candidate/
+     (like other commands).
+
+     This is useful e.g. when you call =find-file= to create a new
+     file, but the desired name matches an existing file. In that
+     case, using ~C-j~ would select that existing file, which isn't
+     what you want - use this command instead.
+
+- ~C-'~ (=ivy-avy=) ::
+     Uses avy to select one of the candidates on the current candidate
+     page.  This can often be faster than multiple ~C-n~ or ~C-p~
+     keystrokes followed by ~C-m~.
+
+*** Key bindings for multiple selections and actions, keep minibuffer open
+:PROPERTIES:
+:CUSTOM_ID: key-bindings-for-multiple-selections-and-actions-keep-minibuffer-open
+:END:
+
+For repeatedly applying multiple actions or acting on multiple
+candidates, Ivy does not close the minibuffer between commands. It
+keeps the minibuffer open for applying subsequent actions.
+
+Adding an extra meta key to the normal key chord invokes the special
+version of the regular commands that enables applying multiple
+actions.
+
+- ~C-M-m~ (=ivy-call=) ::
+     Is the non-exiting version of ~C-m~ (=ivy-done=).
+
+     Instead of closing the minibuffer, ~C-M-m~ allows selecting
+     another candidate or another action. For example, ~C-M-m~ on
+     functions list invokes =describe-function=. When combined with
+     ~C-n~, function descriptions can be invoked quickly in
+     succession.
+
+- ~C-M-o~ (=ivy-dispatching-call=) ::
+     Is the non-exiting version of ~M-o~ (=ivy-dispatching-done=).
+
+     For example, during the =counsel-rhythmbox= completion, press
+     ~C-M-o e~ to en-queue the selected candidate, followed by ~C-n
+     C-m~ to play the next candidate - the current action reverts to
+     the default one after ~C-M-o~.
+
+- ~C-M-n~ (=ivy-next-line-and-call=) ::
+     Combines ~C-n~ and ~C-M-m~. Applies an action and moves to next
+     line.
+
+     Comes in handy when opening multiple files from
+     =counsel-find-file=, =counsel-git-grep=, =counsel-ag=, or
+     =counsel-locate= lists. Just hold ~C-M-n~ for rapid-fire default
+     action on each successive element of the list.
+
+- ~C-M-p~ (=ivy-previous-line-and-call=) ::
+     Combines ~C-p~ and ~C-M-m~.
+
+     Similar to the above except it moves through the list in the
+     other direction.
+
+- =ivy-resume= ::
+     Recalls the state of the completion session just before its last
+     exit.
+
+     Useful after an accidental ~C-m~ (=ivy-done=).
+
+*** Key bindings that alter the minibuffer input
+:PROPERTIES:
+:CUSTOM_ID: key-bindings-that-alter-the-minibuffer-input
+:END:
+
+- ~M-n~ (=ivy-next-history-element=) ::
+     Cycles forward through the Ivy command history.
+
+     Ivy updates an internal history list after each action. When this
+     history list is empty, ~M-n~ inserts symbol (or URL) at point
+     into the minibuffer.
+
+- ~M-p~ (=ivy-previous-history-element=) ::
+     Cycles forward through the Ivy command history.
+
+- ~M-i~ (=ivy-insert-current=) ::
+     Inserts the current candidate into the minibuffer.
+
+     Useful for copying and renaming files, for example: ~M-i~ to
+     insert the original file name string, edit it, and then ~C-m~ to
+     complete the renaming.
+
+- ~M-j~ (=ivy-yank-word=) ::
+     Inserts the sub-word at point into the minibuffer.
+
+     This is similar to ~C-s C-w~ with =isearch=. Ivy reserves ~C-w~
+     for =kill-region=.
+
+- ~S-SPC~ (=ivy-restrict-to-matches=) ::
+     Deletes the current input, and resets the candidates list to the
+     currently restricted matches.
+
+     This is how Ivy provides narrowing in successive tiers.
+
+- ~C-r~ (=ivy-reverse-i-search=) ::
+     Starts a recursive completion session through the command's
+     history.
+
+     This works just like ~C-r~ at the bash command prompt, where the
+     completion candidates are the history items. Upon completion, the
+     selected candidate string is inserted into the minibuffer.
+
+*** Other key bindings
+:PROPERTIES:
+:CUSTOM_ID: other-key-bindings
+:END:
+
+- ~M-w~ (=ivy-kill-ring-save=) ::
+     Copies selected candidates to the kill ring.
+
+     Copies the region if the region is active.
+
+*** Hydra in the minibuffer
+:PROPERTIES:
+:CUSTOM_ID: hydra-in-the-minibuffer
+:END:
+
+- ~C-o~ (=hydra-ivy/body=) ::
+     Invokes the hydra menu with short key bindings.
+
+When Hydra is active, minibuffer editing is disabled and menus
+display short aliases:
+
+| Short | Normal    | Command name              |
+|-------+-----------+---------------------------|
+| ~o~   | ~C-g~     | =keyboard-escape-quit=    |
+| ~j~   | ~C-n~     | =ivy-next-line=           |
+| ~k~   | ~C-p~     | =ivy-previous-line=       |
+| ~h~   | ~M-<~     | =ivy-beginning-of-buffer= |
+| ~l~   | ~M->~     | =ivy-end-of-buffer=       |
+| ~d~   | ~C-m~     | =ivy-done=                |
+| ~f~   | ~C-j~     | =ivy-alt-done=            |
+| ~g~   | ~C-M-m~   | =ivy-call=                |
+| ~u~   | ~C-c C-o~ | =ivy-occur=               |
+
+Hydra reduces key strokes, for example: ~C-n C-n C-n C-n~ is ~C-o
+jjjj~ in Hydra.
+
+Hydra menu offers these additioanl bindings:
+
+- ~c~ (=ivy-toggle-calling=) ::
+     Toggle calling the action after each candidate change. It
+     modifies ~j~ to ~jg~, ~k~ to ~kg~ etc.
+
+- ~m~ (=ivy-toggle-fuzzy=) ::
+     Toggle the current regexp matcher.
+
+- ~>~ (=ivy-minibuffer-grow=) ::
+     Increase =ivy-height= for the current minibuffer.
+
+- ~<~ (=ivy-minibuffer-shrink=) ::
+     Decrease =ivy-height= for the current minibuffer.
+
+- ~w~ (=ivy-prev-action=) ::
+     Select the previous action.
+
+- ~s~ (=ivy-next-action=) ::
+     Select the next action.
+
+- ~a~ (=ivy-read-action=) ::
+     Use a menu to select an action.
+
+- ~C~ (=ivy-toggle-case-fold=) ::
+     Toggle case folding (match both upper and lower case
+     characters for lower case input).
+
+*** Saving the current completion session to a buffer
+:PROPERTIES:
+:CUSTOM_ID: saving-the-current-completion-session-to-a-buffer
+:END:
+
+- ~C-c C-o~ (=ivy-occur=) ::
+     Saves the current candidates to a new buffer and exits
+     completion.
+
+The new buffer is read-only and has a few useful bindings defined.
+
+- ~RET~ or ~j~ (=ivy-occur-press=) ::
+     Call the current action on the selected candidate.
+
+- ~mouse-1~ (=ivy-occur-click=) ::
+     Call the current action on the selected candidate.
+
+- ~j~ (=next-line=) ::
+     Move to next line.
+
+- ~k~ (=previous-line=) ::
+     Move to previous line.
+
+- ~a~ (=ivy-occur-read-action=) ::
+     Read an action and make it current for this buffer.
+
+- ~o~ (=ivy-occur-dispatch=) ::
+     Read an action and call it on the selected candidate.
+
+- ~q~ (=quit-window=) ::
+     Bury the current buffer.
+
+
+Ivy has no limit on the number of active buffers like these.
+
+Ivy takes care of naming buffers uniquely by constructing descriptive
+names. For example: =*ivy-occur counsel-describe-variable
+"function$*=.
+
+* Completion Styles
+:PROPERTIES:
+:CUSTOM_ID: completion-styles
+:END:
+
+Ivy's completion functions rely on a regex builder - a function that
+transforms a string input to a string regex. All current candidates
+simply have to match this regex. Each collection can be assigned its
+own regex builder by customizing =ivy-re-builders-alist=.
+
+The keys of this alist are collection names, and the values are one of
+the following:
+- =ivy--regex=
+- =ivy--regex-plus=
+- =ivy--regex-ignore-order=
+- =ivy--regex-fuzzy=
+- =regexp-quote=
+
+A catch-all key, =t=, applies to all collections that don't have their
+own key.
+
+The default is:
+
+#+begin_src elisp
+(setq ivy-re-builders-alist
+      '((t . ivy--regex-plus)))
+#+end_src
+
+This example shows a custom regex builder assigned to file name
+completion:
+
+#+begin_src elisp
+(setq ivy-re-builders-alist
+      '((read-file-name-internal . ivy--regex-fuzzy)
+        (t . ivy--regex-plus)))
+#+end_src
+
+Here, =read-file-name-internal= is a function that is passed as the
+second argument to =completing-read= for file name completion.
+
+The regex builder resolves as follows (in order of priority):
+1. =re-builder= argument passed to =ivy-read=.
+2. =collection= argument passed to =ivy-read= is a function and has an
+   entry on =ivy-re-builders-alist=.
+3. =caller= argument passed to =ivy-read= has an entry on
+   =ivy-re-builders-alist=.
+4. =this-command= has an entry on =ivy-re-builders-alist=.
+5. =t= has an entry on =ivy-re-builders-alist=.
+6. =ivy--regex=.
+
+** ivy--regex-plus
+:PROPERTIES:
+:CUSTOM_ID: ivy--regex-plus
+:END:
+
+=ivy--regex-plus= is Ivy's default completion method.
+
+=ivy--regex-plus= matches by splitting the input by spaces and
+rebuilding it into a regex.
+
+As the search string is typed in Ivy's minibuffer, it is transformed
+into valid regex syntax. If the string is ="for example"=, it is
+transformed into
+
+#+begin_src elisp
+"\\(for\\).*\\(example\\)"
+#+end_src
+
+which in regex terminology matches ="for"= followed by a wild card and
+then ="example"=. Note how Ivy uses the space character to build wild
+cards. To match a literal white space, use an extra space. So to match
+one space type two spaces, to match two spaces type three spaces, and
+so on.
+
+As Ivy transforms typed characters into regex strings, it provides an
+intuitive feedback through font highlights.
+
+Ivy supports regexp negation with ="!"=.
+For example, ="define key ! ivy quit"= first selects everything
+matching ="define.*key"=, then removes everything matching ="ivy"=,
+and finally removes everything matching ="quit"=. What remains is the
+final result set of the negation regexp.
+
+Since Ivy treats minibuffer input as a regexp, the standard regexp
+identifiers work: ="^"=, ="$"=, ="\b"= or ="[a-z]"=. The exceptions
+are spaces, which translate to =".*"=, and ="!"= that signal the
+beginning of a negation group.
+
+** ivy--regex-ignore-order
+:PROPERTIES:
+:CUSTOM_ID: ivy--regex-ignore-order
+:END:
+
+=ivy--regex-ignore-order= ignores the order of regexp tokens when
+searching for matching candidates. For instance, the input
+="for example"= will match ="example test for"=.
+
+** ivy--regex-fuzzy
+:PROPERTIES:
+:CUSTOM_ID: ivy--regex-fuzzy
+:END:
+
+=ivy--regex-fuzzy= splits each character with a wild card. Searching
+for ="for"= returns all ="f.*o.*r"= matches, resulting in a large
+number of hits.  Yet some searches need these extra hits. Ivy sorts
+such large lists using =flx= package's scoring mechanism, if it's
+installed.
+
+~C-o m~ toggles the current regexp builder.
+
+
+* Customization
+:PROPERTIES:
+:CUSTOM_ID: customization
+:END:
+** Faces
+:PROPERTIES:
+:CUSTOM_ID: faces
+:END:
+- =ivy-current-match= ::
+     Highlights the currently selected candidate.
+- =ivy-minibuffer-match-face-1= ::
+     Highlights the background of the match.
+- =ivy-minibuffer-match-face-2= ::
+     Highlights the first (modulo 3) matched group.
+- =ivy-minibuffer-match-face-3= ::
+     Highlights the second (modulo 3) matched group.
+- =ivy-minibuffer-match-face-4= ::
+     Highlights the third (modulo 3) matched group.
+- =ivy-confirm-face= ::
+     Highlights the "(confirm)" part of the prompt.
+
+     When =confirm-nonexistent-file-or-buffer= set to =t=, then
+     confirming non-existent files in =ivy-mode= requires an
+     additional ~RET~.
+
+     The confirmation prompt will use this face.
+
+     For example:
+
+     #+begin_src elisp
+     (setq confirm-nonexistent-file-or-buffer t)
+     #+end_src
+
+     Then call =find-file=, enter "eldorado" and press ~RET~ - the
+     prompt will be appended with "(confirm)". Press ~RET~ once more
+     to confirm, or any key to continue the completion.
+- =ivy-match-required-face= ::
+     Highlights the "(match required)" part of the prompt.
+
+     When completions have to match available candidates and cannot
+     take random input, the "(match required)" prompt signals this
+     constraint.
+
+     For example, call =describe-variable=, enter "waldo" and press
+     ~RET~ - "(match required)" is prompted.
+     Press any key for the prompt to disappear.
+- =ivy-subdir= ::
+     Highlights directories when completing file names.
+- =ivy-remote= ::
+     Highlights remote files when completing file names.
+- =ivy-virtual= ::
+     Highlights virtual buffers when completing buffer names.
+
+     Virtual buffers correspond to bookmarks and recent files list,
+     =recentf=.
+
+     Enable virtual buffers with:
+
+     #+begin_src elisp
+     (setq ivy-use-virtual-buffers t)
+     #+end_src
+** Defcustoms
+:PROPERTIES:
+:CUSTOM_ID: defcustoms
+:END:
+- User Option =ivy-count-format= ::
+     A string that specifies display of number of candidates and
+     current candidate, if one exists.
+
+     The number of matching candidates by default is shown as a right-
+     padded integer value.
+
+     To disable showing the number of candidates:
+
+     #+begin_src elisp
+     (setq ivy-count-format "")
+     #+end_src
+
+     To also display the current candidate:
+
+     #+begin_src elisp
+     (setq ivy-count-format "(%d/%d) ")
+     #+end_src
+
+     The =format=-style switches this variable uses are described
+     in the =format= documentation.
+
+- User Option =ivy-display-style= ::
+     Specifies highlighting candidates in the minibuffer.
+
+     The default setting is ='fancy= and valid only in Emacs versions
+     24.5 or newer.
+
+     Set =ivy-display-style= to =nil= for a plain minibuffer.
+
+- User Option =ivy-on-del-error-function= ::
+     Specify what when ~DEL~ (=ivy-backward-delete-char=) throws.
+
+     The default behavior is to quit the completion after ~DEL~ -- a
+     handy key to invoke after mistakenly triggering a completion.
+
+** Actions
+:PROPERTIES:
+:CUSTOM_ID: actions
+:END:
+*** What are actions?
+:PROPERTIES:
+:CUSTOM_ID: what-are-actions
+:END:
+An action is a function that is called after you select a candidate
+during completion. This function takes a single string argument, which
+is the selected candidate.
+
+- Window context when calling an action ::
+     Currently, the action is executed in the minibuffer window
+     context. This means e.g. that if you call =insert= the text will
+     be inserted into the minibuffer.
+
+     If you want to execute the action in the initial window from
+     which the completion started, use the =with-ivy-window= wrapper
+     macro.
+
+     #+begin_src elisp
+     (defun ivy-insert-action (x)
+       (with-ivy-window
+         (insert x)))
+     #+end_src
+
+*** How can different actions be called?
+:PROPERTIES:
+:CUSTOM_ID: how-can-different-actions-be-called
+:END:
+- ~C-m~ (=ivy-done=) calls the current action.
+- ~M-o~ (=ivy-dispatching-done=) presents available actions for
+  selection, calls it after selection, and then exits.
+- ~C-M-o~ (=ivy-dispatching-call=) presents available actions for
+  selection, calls it after selection, and then does not exit.
+
+*** How to modify the actions list?
+:PROPERTIES:
+:CUSTOM_ID: how-to-modify-the-actions-list
+:END:
+Currently, you can append any amount of your own actions to the
+default list of actions. This can be done either for a specific
+command, or for all commands at once.
+
+Usually, the command has only one default action. The convention is to
+use single letters when selecting a command, and the letter ~o~ is
+designated for the default command. This way, ~M-o o~ should be always
+equivalent to ~C-m~.
+
+*** Example - add two actions to each command
+:PROPERTIES:
+:CUSTOM_ID: example---add-two-actions-to-each-command
+:END:
+The first action inserts the current candidate into the Ivy window -
+the window from which =ivy-read= was called.
+
+The second action copies the current candidate to the kill ring.
+
+#+begin_src elisp
+(defun ivy-yank-action (x)
+  (kill-new x))
+
+(defun ivy-copy-to-buffer-action (x)
+  (with-ivy-window
+    (insert x)))
+
+(ivy-set-actions
+ t
+ '(("i" ivy-copy-to-buffer-action "insert")
+   ("y" ivy-yank-action "yank")))
+#+end_src
+
+Then in any completion session, ~M-o y~ invokes =ivy-yank-action=, and
+~M-o i~ invokes =ivy-copy-to-buffer-action=.
+
+**** How to undo adding the two actions
+:PROPERTIES:
+:CUSTOM_ID: how-to-undo-adding-the-two-actions
+:END:
+Since =ivy-set-actions= modifies the internal dictionary with new
+data, set the extra actions list to =nil= by assigning =nil= value to
+the =t= key as follows:
+
+#+begin_src elisp
+(ivy-set-actions t nil)
+#+end_src
+
+**** How to add actions to a specific command
+:PROPERTIES:
+:CUSTOM_ID: how-to-add-actions-to-a-specific-command
+:END:
+Use the command name as the key:
+
+#+begin_src elisp
+(ivy-set-actions
+ 'swiper
+ '(("i" ivy-copy-to-buffer-action "insert")
+   ("y" ivy-yank-action "yank")))
+#+end_src
+
+*** Example - define a new command with several actions
+:PROPERTIES:
+:CUSTOM_ID: example---define-a-new-command-with-several-actions
+:END:
+#+begin_src elisp
+(defun my-action-1 (x)
+  (message "action-1: %s" x))
+
+(defun my-action-2 (x)
+  (message "action-2: %s" x))
+
+(defun my-action-3 (x)
+  (message "action-3: %s" x))
+
+(defun my-command-with-3-actions ()
+  (interactive)
+  (ivy-read "test: " '("foo" "bar" "baz")
+            :action '(1
+                      ("o" my-action-1 "action 1")
+                      ("j" my-action-2 "action 2")
+                      ("k" my-action-3 "action 3"))))
+#+end_src
+
+The number 1 above is the index of the default action. Each
+action has its own string description for easy selection.
+
+**** Test the above function with =ivy-occur=
+:PROPERTIES:
+:CUSTOM_ID: test-the-above-function-with-ivy-occur
+:END:
+To examine each action with each candidate in a key-efficient way, try:
+
+- Call =my-command-with-3-actions=
+- Press ~C-c C-o~ to close the completion window and move to an
+  ivy-occur buffer
+- Press ~kkk~ to move to the first candidate, since the point is most
+  likely at the end of the buffer
+- Press ~oo~ to call the first action
+- Press ~oj~ and ~ok~ to call the second and the third actions
+- Press ~j~ to move to the next candidate
+- Press ~oo~, ~oj~, ~ok~
+- Press ~j~ to move to the next candidate
+- and so on...
+
+** Packages
+:PROPERTIES:
+:CUSTOM_ID: packages
+:END:
+- =org-mode= ::
+     =org-mode= versions 8.3.3 or later obey
+     =completing-read-function= (which =ivy-mode= sets). Try refiling
+     headings with similar names to appreciate =ivy-mode=.
+- =magit= ::
+     Magit requries this setting for ivy completion:
+
+     #+begin_src elisp
+     (setq magit-completing-read-function 'ivy-completing-read)
+     #+end_src
+- =find-file-in-project= ::
+     It uses ivy by default if Ivy is installed.
+- =projectile= ::
+     Projectile requires this seeting for ivy completion:
+
+     #+begin_src elisp
+     (setq projectile-completion-system 'ivy)
+     #+end_src
+- =helm-make= ::
+     Helm-make requires this seeting for ivy completion.
+
+     #+begin_src elisp
+     (setq helm-make-completion-method 'ivy)
+     #+end_src
+
+* Commands
+:PROPERTIES:
+:CUSTOM_ID: commands
+:END:
+** File Name Completion
+:PROPERTIES:
+:CUSTOM_ID: file-name-completion
+:END:
+Since file name completion is ubiquitious, Ivy provides extra
+bindings that work here:
+
+
+- ~C-j~ (=ivy-alt-done=) ::
+     On a directory, restarts completion from that directory.
+
+     On a file or =./=, exit completion with the selected candidate.
+- ~DEL~ (=ivy-backward-delete-char=) ::
+     Restart the completion in the parent directory if current input
+     is empty.
+- ~//~ (=self-insert-command=) ::
+     Switch to the root directory.
+- ~~~ (=self-insert-command=) ::
+     Switch to the home directory.
+- ~/~ (=self-insert-command=) ::
+     If the current input matches an existing directory name exactly,
+     switch the completion to that directory.
+- ~M-q~ (=ivy-toggle-regexp-quote=) ::
+     Toggle between input as regexp or not.
+
+     Switch to matching literally since file names include =.=, which
+     is for matching any char in regexp mode.
+
+- User Option =ivy-extra-directories= ::
+     Decide if you want to see =../= and =./= during file name
+     completion.
+
+     Reason to remove: =../= is the same as ~DEL~.
+
+     Reason not to remove: navigate anywhere with only ~C-n~, ~C-p~
+     and ~C-j~.
+
+     Likewise, =./= can be removed.
+
+- Using TRAMP ::
+     From any directory, with the empty input, inputting =/ssh:= and
+     pressing ~C-j~ (or ~RET~, which is the same thing) completes for
+     host and user names.
+
+     For =/ssh:user@= input, completes the domain name.
+
+     ~C-i~ works in a similar way to the default completion.
+
+- History ::
+     File history works the same with ~M-p~, ~M-n~, and ~C-r~, but
+     uses a custom code for file name completion that cycles through
+     files previously opened. It also works with TRAMP files.
+
+** Buffer Name Completion
+:PROPERTIES:
+:CUSTOM_ID: buffer-name-completion
+:END:
+- User Option =ivy-use-virtual-buffers= ::
+     When non-nil, add =recentf-mode= and bookmarks to
+     =ivy-switch-buffer= completion candidates.
+
+     Adding this to Emacs init file:
+
+     #+begin_src elisp
+     (setq ivy-use-virtual-buffers t)
+     #+end_src
+     will add additional virual buffers to the buffers list for recent
+     files. Selecting such virtual buffers, which are highlighted with
+     =ivy-virtual= face, will open the corresponding file.
+
+** Counsel commands
+:PROPERTIES:
+:CUSTOM_ID: counsel-commands
+:END:
+The main advantages of =counsel-= functions over their basic
+equivalents in =ivy-mode= are:
+
+1. Multi-actions and non-exiting actions work.
+2. =ivy-resume= can resume the last completion session.
+3. Customize =ivy-set-actions=, =ivy-re-builders-alist=.
+4. Customize individual keymaps, such as =counsel-describe-map=,
+   =counsel-git-grep-map=, or =counsel-find-file-map=, instead of
+   customizing =ivy-minibuffer-map= that applies to all completion
+   sessions.
+* API
+:PROPERTIES:
+:CUSTOM_ID: api
+:END:
+The main (and only) entry point is the =ivy-read= function. It takes
+two required arguments and many optional arguments that can be passed
+by a key. The optional =:action= argument is highly recommended for
+features such as multi-actions, non-exiting actions, =ivy-occur= and
+=ivy-resume=.
+
+** Required arguments for =ivy-read=
+:PROPERTIES:
+:CUSTOM_ID: required-arguments-for-ivy-read
+:END:
+- =prompt= ::
+     A format string normally ending in a colon and a space.
+
+     =%d= anywhere in the string is replaced by the current number of
+     matching candidates. To use a literal =%= character, escape it as
+     =%%=. See also =ivy-count-format=.
+
+- =collection= ::
+     Either a list of strings, a function, an alist or a hash table.
+
+     If a function, then it has to be compatible with
+     =all-completions=.
+
+** Optional arguments for =ivy-read=
+:PROPERTIES:
+:CUSTOM_ID: optional-arguments-for-ivy-read
+:END:
+- =predicate= ::
+     Is a function to filter the initial collection. It has to be
+     compatible with =all-completions=. Tip: most of the time, it's
+     simpler to just apply this filter to the =collection= argument
+     itself, e.g. =(cl-remove-if-not predicate collection)=.
+- =require-match= ::
+     When set to a non-nil value, input must match one of the
+     candidates. Custom input is not accepted.
+- =initial-input= ::
+     This string argument is included for compatibility with
+     =completing-read=, which inserts it into the minibuffer.
+
+     It's recommended to use the =preselect= argument instead of this.
+- =history= ::
+     Name of the symbol to store history. See =completing-read=.
+- =preselect= ::
+     When set to a string value, select the first candidate matching
+     this value.
+
+     When set to an integer value, select the candidate with that
+     index value.
+
+     Every time the input becomes empty, the item corresponding to to
+     =preselect= is selected.
+- =keymap= ::
+     A keymap to be composed with =ivy-minibuffer-map=. This keymap
+     has priority over =ivy-minibuffer-map= and can be modified at any
+     later stage.
+- =update-fn= ::
+     Is the function called each time the current candidate changes.
+     This function takes no arguments and is called in the
+     minibuffer's =post-command-hook=. See =swiper= for an example
+     usage.
+- =sort= ::
+     When non-nil, use =ivy-sort-functions-alist= to sort the
+     collection as long as the collection is not larger than
+     =ivy-sort-max-size=.
+- =action= ::
+     Is the function to call after selection. It takes a string
+     argument.
+- =unwind= ::
+     Is the function to call before exiting completion. It takes no
+     arguments. This function is called even if the completion is
+     interrupted with ~C-g~. See =swiper= for an example usage.
+- =re-builder= ::
+     Is a function that takes a string and returns a valid regex. See
+     =Completion Styles= for details.
+- =matcher= ::
+     Is a function that takes a regex string and a list of strings and
+     returns a list of strings matching the regex. Any ordinary Emacs
+     matching function will suffice, yet finely tuned mathing
+     functions can be used. See =counsel-find-file= for an example
+     usage.
+- =dynamic-collection= ::
+     When non-nil, =collection= will be used to dynamically generate
+     the candidates each time the input changes, instead of being used
+     once statically with =all-completions= to generate a list of
+     strings. See =counsel-locate= for an example usage.
+- =caller= ::
+     Is a symbol that uniquely identifies the function that called
+     =ivy-read=, which may be useful for further customizations.
+** Example - =counsel-describe-function=
+:PROPERTIES:
+:CUSTOM_ID: example---counsel-describe-function
+:END:
+This is a typical example of a function with a non-async collection,
+which is a collection where all the strings in the collection are
+known prior to any input from the user.
+
+Only the first two arguments (along with =action=) are essential - the
+rest of the arguments are for fine-tuning, and could be omitted.
+
+The =action= argument could also be omitted - but then =ivy-read=
+would do nothing except returning the string result, which you could
+later use yourself. However, it's recommended that you use the
+=action= argument.
+
+#+begin_src elisp
+(defun counsel-describe-function ()
+  "Forward to `describe-function'."
+  (interactive)
+  (ivy-read "Describe function: "
+            (let (cands)
+              (mapatoms
+               (lambda (x)
+                 (when (fboundp x)
+                   (push (symbol-name x) cands))))
+              cands)
+            :keymap counsel-describe-map
+            :preselect (counsel-symbol-at-point)
+            :history 'counsel-describe-symbol-history
+            :require-match t
+            :sort t
+            :action (lambda (x)
+                      (describe-function
+                       (intern x)))
+            :caller 'counsel-describe-function))
+#+end_src
+
+Here are the interesting features of the above function, in the order that they appear:
+
+- The =prompt= argument is a simple string ending in ": ".
+- The =collection= argument evaluates to a (large) list of strings.
+- The =keymap= argument is for a custom keymap to supplement =ivy-minibuffer-map=.
+- The =preselect= is provided by =counsel-symbol-at-point=, which
+  returns a symbol near the point. Ivy then selects the first
+  candidate from the collection that matches this symbol. To select
+  this pre-selected candidate, a ~RET~ will suffice. No further user
+  input is necessary.
+- The =history= argument is for keeping the history of this command
+  separate from the common history in =ivy-history=.
+- The =require-match= is set to =t= since it doesn't make sense to
+  call =describe-function= on an un-interned symbol.
+- The =sort= argument is set to =t= so choosing between similar
+  candidates becomes easier. Sometimes, the collection size will
+  exceed =ivy-sort-max-size=, which is 30000 by default. In that case
+  the sorting will not happen to avoid delays.
+
+  Adjust this variable to choose between sorting time and completion
+  start-up time.
+- The =action= argument calls =describe-function= on the interned
+  selected candidate.
+- The =caller= argument identifies this completion session. This is
+  important, since with the collection being a list of strings and not
+  a function name, the only other way for =ivy-read= to identify
+  "who's calling" and to apply the appropriate customizations is to
+  examine =this-command=. But =this-command= would be modified if
+  another command called =counsel-describe-function=.
+** Example - =counsel-locate=
+:PROPERTIES:
+:CUSTOM_ID: example---counsel-locate
+:END:
+This is a typical example of a function with an async collection.
+Since the collection function cannot pre-compute all the locatable
+files in memory within reasonable limits (time or memory), it relies
+on user input to filter the universe of possible candidates to a
+manageable size while also continuing to search asynchronously for
+possible candidates. Both the filtering and searching continues with
+each character change of the input with rapid updates to the
+collection presented without idle waiting times. This live update will
+continue as long as there are likely candidates. Eventually updates to
+the minibuffer will stop after user input, filtering, and searching
+have exhausted looking for possible candidates.
+
+Async collections suit long-running shell commands, such as =locate=.
+With each new input, a new process starts while the old process is
+killed. The collection is refreshed anew with each new process.
+Meanwhile the user can provide more input characters (for further
+narrowing) or select a candidate from the visible collection.
+
+#+begin_src elisp
+(defun counsel-locate-function (str)
+  (if (< (length str) 3)
+      (counsel-more-chars 3)
+    (counsel--async-command
+     (format "locate %s '%s'"
+             (mapconcat #'identity counsel-locate-options " ")
+             (counsel-unquote-regex-parens
+              (ivy--regex str))))
+    '("" "working...")))
+
+;;;###autoload
+(defun counsel-locate (&optional initial-input)
+  "Call the \"locate\" shell command.
+INITIAL-INPUT can be given as the initial minibuffer input."
+  (interactive)
+  (ivy-read "Locate: " #'counsel-locate-function
+            :initial-input initial-input
+            :dynamic-collection t
+            :history 'counsel-locate-history
+            :action (lambda (file)
+                      (with-ivy-window
+                        (when file
+                          (find-file file))))
+            :unwind #'counsel-delete-process
+            :caller 'counsel-locate))
+#+end_src
+
+Here are the interesting features of the above functions, in the order
+that they appear:
+
+- =counsel-locate-function= takes a string argument and returns a list
+  of strings. Note that it's not compatible with =all-completions=,
+  but since we're not using that here, might as well use one argument
+  instead of three.
+- =counsel-more-chars= is a simple function that returns e.g.
+  ='("2 chars more")= asking the user for more input.
+- =counsel--async-command= is a very easy API simplification that
+  takes a single string argument suitable for
+  =shell-command-to-string=. So you could prototype your function as
+  non-async using =shell-command-to-string= and =split-string= to
+  produce a collection, then decide that you want async and simply swap in
+  =counsel--async-command=.
+- =counsel-locate= is an interactive function with an optional =initial-input=.
+- =#'counsel-locate-function= is passed as the =collection= argument.
+- =dynamic-collection= is set to t, since this is an async collection.
+- =action= argument uses =with-ivy-window= wrapper, since we want to open the
+  selected file in the same window from which =counsel-locate= was
+  called.
+- =unwind= argument is set to =#'counsel-delete-process=: when we press ~C-g~
+  we want to kill the running process created by
+  =counsel--async-command=.
+- =caller= argument identifies this command for easier customization.
+
+* Variable Index
+:PROPERTIES:
+:INDEX:    vr
+:CUSTOM_ID: variable-index
+:END:
+
+* Keystroke Index
+:PROPERTIES:
+:CUSTOM_ID: key-index
+:INDEX:    ky
+:END:
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/doc/ivy.texi
@@ -0,0 +1,1672 @@
+\input texinfo    @c -*- texinfo -*-
+@c %**start of header
+@setfilename ./ivy.info
+@settitle Ivy User Manual
+@documentencoding UTF-8
+@documentlanguage en
+@c %**end of header
+
+@copying
+@ifnottex
+Ivy manual, version 0.7.0
+
+Ivy is an interactive interface for completion in Emacs. Emacs uses
+completion mechanism in a variety of contexts: code, menus, commands,
+variables, functions, etc. Completion entails listing, sorting,
+filtering, previewing, and applying actions on selected items. When
+active, @code{ivy-mode} completes the selection process by narrowing
+available choices while previewing in the minibuffer. Selecting the
+final candidate is either through simple keyboard character inputs or
+through powerful regular expressions.
+@end ifnottex
+
+Copyright (C) 2015 Free Software Foundation, Inc.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.3 or
+any later version published by the Free Software Foundation; with no
+Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
+and with the Back-Cover Texts as in (a) below.  A copy of the license
+is included in the section entitled ``GNU Free Documentation License.''
+
+(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
+modify this GNU manual.''
+@end quotation
+@end copying
+
+@dircategory Emacs
+@direntry
+* Ivy: (ivy).           Using Ivy for completion.
+@end direntry
+
+@finalout
+@titlepage
+@title Ivy User Manual
+@author Oleh Krehel
+@page
+@vskip 0pt plus 1filll
+@insertcopying
+@end titlepage
+
+@contents
+
+@ifnottex
+@node Top
+@top Ivy User Manual
+@insertcopying
+@end ifnottex
+
+@menu
+* Introduction::
+* Installation::
+* Getting started::
+* Key bindings::
+* Completion Styles::
+* Customization::
+* Commands::
+* API::
+* Variable Index::
+* Keystroke Index::
+
+@detailmenu
+--- The Detailed Node Listing ---
+
+Installation
+
+* Installing from Emacs Package Manager::
+* Installing from the Git repository::
+
+Getting started
+
+* Basic customization::
+
+Key bindings
+
+* Global key bindings::
+* Minibuffer key bindings::
+
+Minibuffer key bindings
+
+* Key bindings for navigation::
+* Key bindings for single selection, action, then exit minibuffer: Key bindings for single selection action then exit minibuffer.
+* Key bindings for multiple selections and actions, keep minibuffer open: Key bindings for multiple selections and actions keep minibuffer open.
+* Key bindings that alter the minibuffer input::
+* Other key bindings::
+* Hydra in the minibuffer::
+* Saving the current completion session to a buffer::
+Completion Styles
+
+* ivy--regex-plus::
+* ivy--regex-ignore-order::
+* ivy--regex-fuzzy::
+
+Customization
+
+* Faces::
+* Defcustoms::
+* Actions::
+* Packages::
+
+Actions
+
+* What are actions?::
+* How can different actions be called?::
+* How to modify the actions list?::
+* Example - add two actions to each command::
+* Example - define a new command with several actions::
+
+Example - add two actions to each command
+
+* How to undo adding the two actions::
+* How to add actions to a specific command::
+
+Example - define a new command with several actions
+
+* Test the above function with @code{ivy-occur}::
+Commands
+
+* File Name Completion::
+* Buffer Name Completion::
+* Counsel commands::
+
+API
+
+* Required arguments for @code{ivy-read}::
+* Optional arguments for @code{ivy-read}::
+* Example - @code{counsel-describe-function}::
+* Example - @code{counsel-locate}::
+@end detailmenu
+@end menu
+
+@node Introduction
+@chapter Introduction
+
+Ivy is for quick and easy selection from a list. When Emacs prompts
+for a string from a list of several possible choices, Ivy springs into
+action to assist in narrowing and picking the right string from a vast
+number of choices.
+
+Ivy strives for minimalism, simplicity, customizability and
+discoverability.
+
+@subsubheading Minimalism
+@indentedblock
+Uncluttered minibuffer is minimalism. Ivy shows the completion
+defaults, the number of matches, and 10 candidate matches below
+the input line. Customize @code{ivy-height} to adjust the number of
+candidate matches displayed in the minibuffer.
+@end indentedblock
+@subsubheading Simplicity
+@indentedblock
+Simplicity is about Ivy's behavior in the minibuffer. It is also
+about the code interface to extend Ivy's functionality. The
+minibuffer area behaves as close to @code{fundamental-mode} as
+possible. @kbd{SPC} inserts a space, for example, instead of being
+bound to the more complex @code{minibuffer-complete-word}. Ivy's code
+uses easy-to-examine global variables; avoids needless
+complications with branch-introducing custom macros.
+@end indentedblock
+@subsubheading Customizability
+@indentedblock
+Customizability is about being able to use different methods and
+interfaces of completion to tailor the selection process. For
+example, adding a custom display function that points to a
+selected candidate with @code{->}, instead of highlighting the
+selected candidate with the @code{ivy-current-match} face. Or take the
+customization of actions, say after the candidate function is
+selected. @kbd{RET} uses @code{counsel-describe-function} to describe the
+function, whereas @kbd{M-o d} jumps to that function's definition in
+the code. The @kbd{M-o} prefix can be uniformly used with characters
+like @kbd{d} to group similar actions.
+@end indentedblock
+@subsubheading Discoverability
+@indentedblock
+Ivy displays easily discoverable commands through the hydra
+facility.  @kbd{C-o} in the minibuffer displays a hydra menu. It
+opens up within an expanded minibuffer area. Each menu item comes
+with short documentation strings and highlighted one-key
+completions. So discovering even seldom used keys is simply a
+matter of @kbd{C-o} in the minibuffer while in the midst of the Ivy
+interaction. This discoverability minimizes exiting Ivy interface
+for documentation look-ups.
+@end indentedblock
+
+@node Installation
+@chapter Installation
+
+Install Ivy automatically through Emacs's package manager, or manually
+from Ivy's development repository.
+
+Emacs 24.3.1 is the oldest version to run Ivy. Emacs 24.5.1 is the
+oldest version that runs Ivy with fancy faces display.
+@menu
+* Installing from Emacs Package Manager::
+* Installing from the Git repository::
+@end menu
+
+@node Installing from Emacs Package Manager
+@section Installing from Emacs Package Manager
+
+@kbd{M-x} @code{package-install} @kbd{RET} @code{swiper} @kbd{RET}
+
+Ivy is installed as part of @code{swiper} package. @code{swiper} is available
+from two different package archives, GNU ELPA and MELPA. For the
+latest stable version, use the GNU ELPA archives using the above M-x
+command.
+
+For current hourly builds, use the MELPA archives. See the code below
+for adding MELPA to the list of package archives:
+
+@lisp
+(require 'package)
+(add-to-list 'package-archives
+             '("melpa" . "http://melpa.org/packages/"))
+@end lisp
+
+After this do @kbd{M-x} @code{package-refresh-contents} @kbd{RET}, followed by
+@kbd{M-x} @code{package-install} @kbd{RET} @code{swiper} @kbd{RET}.
+
+For package manager details, see @ref{Packages,,,emacs,}.
+
+@node Installing from the Git repository
+@section Installing from the Git repository
+
+@subsubheading Why install from Git?
+@indentedblock
+@itemize
+@item
+No need to wait for MELPA's hourly builds
+@item
+Easy to revert to previous versions
+@item
+Contribute to Ivy's development; send patches; pull requests
+@end itemize
+@end indentedblock
+
+
+@subsubheading Configuration steps
+@indentedblock
+First clone the Swiper repository with:
+
+@example
+     cd ~/git && git clone https://github.com/abo-abo/swiper
+     cd swiper && make compile
+@end example
+
+Second, add these lines to the Emacs init file:
+
+@lisp
+     (add-to-list 'load-path "~/git/swiper/")
+     (require 'ivy)
+@end lisp
+
+Then, update the code with:
+
+@example
+     git pull
+     make
+@end example
+@end indentedblock
+
+@node Getting started
+@chapter Getting started
+
+First enable Ivy completion everywhere:
+
+@lisp
+(ivy-mode 1)
+@end lisp
+
+Note: @code{ivy-mode} can be toggled on and off with @kbd{M-x} @code{ivy-mode}.
+@menu
+* Basic customization::
+@end menu
+
+@node Basic customization
+@section Basic customization
+
+Here are some basic settings particularly useful for new Ivy users:
+
+@lisp
+(setq ivy-use-virtual-buffers t)
+(setq ivy-height 10)
+(setq ivy-count-format "(%d/%d) ")
+@end lisp
+
+If you want, you can go without any customizations at all. The above
+settings are the most bang for the buck in terms of customization.  So
+users that typically don't like customize a lot are advised to look at
+these settings first.
+
+For more advanced customizations, refer to @code{M-x describe-variable}
+documentation.
+
+@node Key bindings
+@chapter Key bindings
+
+@menu
+* Global key bindings::
+* Minibuffer key bindings::
+@end menu
+
+@node Global key bindings
+@section Global key bindings
+
+The recommended key bindings are:
+
+@subsubheading Ivy-based interface to standard commands
+@indentedblock
+@lisp
+     (global-set-key (kbd "C-s") 'swiper)
+     (global-set-key (kbd "M-x") 'counsel-M-x)
+     (global-set-key (kbd "C-x C-f") 'counsel-find-file)
+     (global-set-key (kbd "<f1> f") 'counsel-describe-function)
+     (global-set-key (kbd "<f1> v") 'counsel-describe-variable)
+     (global-set-key (kbd "<f1> l") 'counsel-load-library)
+     (global-set-key (kbd "<f2> i") 'counsel-info-lookup-symbol)
+     (global-set-key (kbd "<f2> u") 'counsel-unicode-char)
+@end lisp
+@end indentedblock
+@subsubheading Ivy-based interface to shell and system tools
+@indentedblock
+@lisp
+     (global-set-key (kbd "C-c g") 'counsel-git)
+     (global-set-key (kbd "C-c j") 'counsel-git-grep)
+     (global-set-key (kbd "C-c k") 'counsel-ag)
+     (global-set-key (kbd "C-x l") 'counsel-locate)
+     (global-set-key (kbd "C-S-o") 'counsel-rhythmbox)
+@end lisp
+@end indentedblock
+@subsubheading Ivy-resume and other commands
+@indentedblock
+@code{ivy-resume} resumes the last Ivy-based completion.
+
+@lisp
+     (global-set-key (kbd "C-c C-r") 'ivy-resume)
+@end lisp
+@end indentedblock
+
+@node Minibuffer key bindings
+@section Minibuffer key bindings
+
+@vindex ivy-minibuffer-map
+Ivy includes several minibuffer bindings, which are defined in the
+@code{ivy-minibuffer-map} keymap variable. The most frequently used ones
+are described here.
+
+@code{swiper} or @code{counsel-M-x} add more key bindings through the @code{keymap}
+argument to @code{ivy-read}. These keys, also active in the minibuffer, are
+described under their respective commands.
+
+A key feature of @code{ivy-minibuffer-map} is its full editing capability
+where the familiar @kbd{C-a}, @kbd{C-f}, @kbd{M-d}, @kbd{M-DEL}, @kbd{M-b}, @kbd{M-w}, @kbd{C-k},
+@kbd{C-y} key bindings work the same as in @code{fundamental-mode}.
+@menu
+* Key bindings for navigation::
+* Key bindings for single selection, action, then exit minibuffer: Key bindings for single selection action then exit minibuffer.
+* Key bindings for multiple selections and actions, keep minibuffer open: Key bindings for multiple selections and actions keep minibuffer open.
+* Key bindings that alter the minibuffer input::
+* Other key bindings::
+* Hydra in the minibuffer::
+* Saving the current completion session to a buffer::
+@end menu
+
+@node Key bindings for navigation
+@subsection Key bindings for navigation
+
+@itemize
+@item
+@kbd{C-n} (@code{ivy-next-line}) selects the next candidate
+@item
+@kbd{C-p} (@code{ivy-previous-line}) selects the previous candidate
+@item
+@kbd{M-<} (@code{ivy-beginning-of-buffer}) selects the first candidate
+@item
+@kbd{M->} (@code{ivy-end-of-buffer}) selects the last candidate
+@item
+@kbd{C-v} (@code{ivy-scroll-up-command}) scrolls up by @code{ivy-height} lines
+@item
+@kbd{M-v} (@code{ivy-scroll-down-command}) scrolls down by @code{ivy-height} lines
+@end itemize
+
+
+@defopt ivy-wrap
+Specifies the wrap-around behavior for @kbd{C-n} and @kbd{C-p}. When
+@code{ivy-wrap} is set to @code{t}, @code{ivy-next-line} and @code{ivy-previous-line}
+will cycle past the last and the first candidates respectively.
+
+Warp-around behavior is off by default.
+@end defopt
+
+@defopt ivy-height
+Use this option to adjust the minibuffer height, which also
+affects scroll size when using @kbd{C-v} and @kbd{M-v} key bindings.
+
+@code{ivy-height} is 10 lines by default.
+@end defopt
+
+@node Key bindings for single selection action then exit minibuffer
+@subsection Key bindings for single selection, action, then exit minibuffer
+
+Ivy can offer several actions from which to choose which action to
+run. This "calling an action" operates on the selected candidate. For
+example, when viewing a list of files, one action could open it for
+editing, one to view it, another to invoke a special function, and so
+on. Custom actions can be added to this interface. The precise action
+to call on the selected candidate can be delayed until after the
+narrowing is completed. No need to exit the interface if unsure which
+action to run. This delayed flexibility and customization of actions
+extends usability of lists in Emacs.
+
+@subsubheading @kbd{C-m} or @kbd{RET} (@code{ivy-done})
+@vindex ivy-done
+@kindex C-m
+@kindex RET
+@indentedblock
+Calls the default action and then exits the minibuffer.
+@end indentedblock
+@subsubheading @kbd{M-o} (@code{ivy-dispatching-done})
+@vindex ivy-dispatching-done
+@kindex M-o
+@indentedblock
+Presents valid actions from which to choose. When only one action
+is available, there is no difference between @kbd{M-o} and @kbd{C-m}.
+@end indentedblock
+@subsubheading @kbd{C-j} (@code{ivy-alt-done})
+@vindex ivy-alt-done
+@kindex C-j
+@indentedblock
+When completing file names, selects the current directory
+candidate and starts a new completion session there. Otherwise,
+it is the same as @code{ivy-done}.
+@end indentedblock
+@subsubheading @kbd{TAB} (@code{ivy-partial-or-done})
+@vindex ivy-partial-or-done
+@kindex TAB
+@indentedblock
+Attempts partial completion, extending current input as much as
+possible. @kbd{TAB TAB} is the same as @kbd{C-j} (@code{ivy-alt-done}).
+
+Example ERT test:
+
+@lisp
+     (should
+      (equal (ivy-with
+              '(progn
+                (ivy-read "Test: " '("can do" "can't, sorry" "other"))
+                ivy-text)
+              "c <tab>")
+             "can"))
+@end lisp
+@end indentedblock
+@subsubheading @kbd{C-M-j} (@code{ivy-immediate-done})
+@vindex ivy-immediate-done
+@kindex C-M-j
+@indentedblock
+Exits with @emph{the current input} instead of @emph{the current candidate}
+(like other commands).
+
+This is useful e.g. when you call @code{find-file} to create a new
+file, but the desired name matches an existing file. In that
+case, using @kbd{C-j} would select that existing file, which isn't
+what you want - use this command instead.
+@end indentedblock
+@subsubheading @kbd{C-'} (@code{ivy-avy})
+@vindex ivy-avy
+@kindex C-'
+@indentedblock
+Uses avy to select one of the candidates on the current candidate
+page.  This can often be faster than multiple @kbd{C-n} or @kbd{C-p}
+keystrokes followed by @kbd{C-m}.
+@end indentedblock
+
+@node Key bindings for multiple selections and actions keep minibuffer open
+@subsection Key bindings for multiple selections and actions, keep minibuffer open
+
+For repeatedly applying multiple actions or acting on multiple
+candidates, Ivy does not close the minibuffer between commands. It
+keeps the minibuffer open for applying subsequent actions.
+
+Adding an extra meta key to the normal key chord invokes the special
+version of the regular commands that enables applying multiple
+actions.
+
+@subsubheading @kbd{C-M-m} (@code{ivy-call})
+@vindex ivy-call
+@kindex C-M-m
+@indentedblock
+Is the non-exiting version of @kbd{C-m} (@code{ivy-done}).
+
+Instead of closing the minibuffer, @kbd{C-M-m} allows selecting
+another candidate or another action. For example, @kbd{C-M-m} on
+functions list invokes @code{describe-function}. When combined with
+@kbd{C-n}, function descriptions can be invoked quickly in
+succession.
+@end indentedblock
+@subsubheading @kbd{C-M-o} (@code{ivy-dispatching-call})
+@vindex ivy-dispatching-call
+@kindex C-M-o
+@indentedblock
+Is the non-exiting version of @kbd{M-o} (@code{ivy-dispatching-done}).
+
+For example, during the @code{counsel-rhythmbox} completion, press
+@kbd{C-M-o e} to en-queue the selected candidate, followed by @kbd{C-n
+     C-m} to play the next candidate - the current action reverts to
+the default one after @kbd{C-M-o}.
+@end indentedblock
+@subsubheading @kbd{C-M-n} (@code{ivy-next-line-and-call})
+@vindex ivy-next-line-and-call
+@kindex C-M-n
+@indentedblock
+Combines @kbd{C-n} and @kbd{C-M-m}. Applies an action and moves to next
+line.
+
+Comes in handy when opening multiple files from
+@code{counsel-find-file}, @code{counsel-git-grep}, @code{counsel-ag}, or
+@code{counsel-locate} lists. Just hold @kbd{C-M-n} for rapid-fire default
+action on each successive element of the list.
+@end indentedblock
+@subsubheading @kbd{C-M-p} (@code{ivy-previous-line-and-call})
+@vindex ivy-previous-line-and-call
+@kindex C-M-p
+@indentedblock
+Combines @kbd{C-p} and @kbd{C-M-m}.
+
+Similar to the above except it moves through the list in the
+other direction.
+@end indentedblock
+@subsubheading @code{ivy-resume}
+@vindex ivy-resume
+@indentedblock
+Recalls the state of the completion session just before its last
+exit.
+
+Useful after an accidental @kbd{C-m} (@code{ivy-done}).
+@end indentedblock
+
+@node Key bindings that alter the minibuffer input
+@subsection Key bindings that alter the minibuffer input
+
+@subsubheading @kbd{M-n} (@code{ivy-next-history-element})
+@vindex ivy-next-history-element
+@kindex M-n
+@indentedblock
+Cycles forward through the Ivy command history.
+
+Ivy updates an internal history list after each action. When this
+history list is empty, @kbd{M-n} inserts symbol (or URL) at point
+into the minibuffer.
+@end indentedblock
+@subsubheading @kbd{M-p} (@code{ivy-previous-history-element})
+@vindex ivy-previous-history-element
+@kindex M-p
+@indentedblock
+Cycles forward through the Ivy command history.
+@end indentedblock
+@subsubheading @kbd{M-i} (@code{ivy-insert-current})
+@vindex ivy-insert-current
+@kindex M-i
+@indentedblock
+Inserts the current candidate into the minibuffer.
+
+Useful for copying and renaming files, for example: @kbd{M-i} to
+insert the original file name string, edit it, and then @kbd{C-m} to
+complete the renaming.
+@end indentedblock
+@subsubheading @kbd{M-j} (@code{ivy-yank-word})
+@vindex ivy-yank-word
+@kindex M-j
+@indentedblock
+Inserts the sub-word at point into the minibuffer.
+
+This is similar to @kbd{C-s C-w} with @code{isearch}. Ivy reserves @kbd{C-w}
+for @code{kill-region}.
+@end indentedblock
+@subsubheading @kbd{S-SPC} (@code{ivy-restrict-to-matches})
+@vindex ivy-restrict-to-matches
+@kindex S-SPC
+@indentedblock
+Deletes the current input, and resets the candidates list to the
+currently restricted matches.
+
+This is how Ivy provides narrowing in successive tiers.
+@end indentedblock
+@subsubheading @kbd{C-r} (@code{ivy-reverse-i-search})
+@vindex ivy-reverse-i-search
+@kindex C-r
+@indentedblock
+Starts a recursive completion session through the command's
+history.
+
+This works just like @kbd{C-r} at the bash command prompt, where the
+completion candidates are the history items. Upon completion, the
+selected candidate string is inserted into the minibuffer.
+@end indentedblock
+
+@node Other key bindings
+@subsection Other key bindings
+
+@subsubheading @kbd{M-w} (@code{ivy-kill-ring-save})
+@vindex ivy-kill-ring-save
+@kindex M-w
+@indentedblock
+Copies selected candidates to the kill ring.
+
+Copies the region if the region is active.
+@end indentedblock
+
+@node Hydra in the minibuffer
+@subsection Hydra in the minibuffer
+
+@subsubheading @kbd{C-o} (@code{hydra-ivy/body})
+@kindex C-o
+@indentedblock
+Invokes the hydra menu with short key bindings.
+@end indentedblock
+
+When Hydra is active, minibuffer editing is disabled and menus
+display short aliases:
+
+@multitable {aaaaa} {aaaaaaaaa} {aaaaaaaaaaaaaaaaaaaaaaaaa}
+@headitem Short
+@tab Normal
+@tab Command name
+@item @kbd{o}
+@tab @kbd{C-g}
+@tab @code{keyboard-escape-quit}
+@item @kbd{j}
+@tab @kbd{C-n}
+@tab @code{ivy-next-line}
+@item @kbd{k}
+@tab @kbd{C-p}
+@tab @code{ivy-previous-line}
+@item @kbd{h}
+@tab @kbd{M-<}
+@tab @code{ivy-beginning-of-buffer}
+@item @kbd{l}
+@tab @kbd{M->}
+@tab @code{ivy-end-of-buffer}
+@item @kbd{d}
+@tab @kbd{C-m}
+@tab @code{ivy-done}
+@item @kbd{f}
+@tab @kbd{C-j}
+@tab @code{ivy-alt-done}
+@item @kbd{g}
+@tab @kbd{C-M-m}
+@tab @code{ivy-call}
+@item @kbd{u}
+@tab @kbd{C-c C-o}
+@tab @code{ivy-occur}
+@end multitable
+
+Hydra reduces key strokes, for example: @kbd{C-n C-n C-n C-n} is @kbd{C-o
+jjjj} in Hydra.
+
+Hydra menu offers these additioanl bindings:
+
+@subsubheading @kbd{c} (@code{ivy-toggle-calling})
+@vindex ivy-toggle-calling
+@kindex c
+@indentedblock
+Toggle calling the action after each candidate change. It
+modifies @kbd{j} to @kbd{jg}, @kbd{k} to @kbd{kg} etc.
+@end indentedblock
+@subsubheading @kbd{m} (@code{ivy-toggle-fuzzy})
+@vindex ivy-toggle-fuzzy
+@kindex m
+@indentedblock
+Toggle the current regexp matcher.
+@end indentedblock
+@subsubheading @kbd{>} (@code{ivy-minibuffer-grow})
+@vindex ivy-minibuffer-grow
+@kindex >
+@indentedblock
+Increase @code{ivy-height} for the current minibuffer.
+@end indentedblock
+@subsubheading @kbd{<} (@code{ivy-minibuffer-shrink})
+@vindex ivy-minibuffer-shrink
+@kindex <
+@indentedblock
+Decrease @code{ivy-height} for the current minibuffer.
+@end indentedblock
+@subsubheading @kbd{w} (@code{ivy-prev-action})
+@vindex ivy-prev-action
+@kindex w
+@indentedblock
+Select the previous action.
+@end indentedblock
+@subsubheading @kbd{s} (@code{ivy-next-action})
+@vindex ivy-next-action
+@kindex s
+@indentedblock
+Select the next action.
+@end indentedblock
+@subsubheading @kbd{a} (@code{ivy-read-action})
+@vindex ivy-read-action
+@kindex a
+@indentedblock
+Use a menu to select an action.
+@end indentedblock
+@subsubheading @kbd{C} (@code{ivy-toggle-case-fold})
+@vindex ivy-toggle-case-fold
+@kindex C
+@indentedblock
+Toggle case folding (match both upper and lower case
+characters for lower case input).
+@end indentedblock
+
+@node Saving the current completion session to a buffer
+@subsection Saving the current completion session to a buffer
+
+@subsubheading @kbd{C-c C-o} (@code{ivy-occur})
+@vindex ivy-occur
+@kindex C-c C-o
+@indentedblock
+Saves the current candidates to a new buffer and exits
+completion.
+@end indentedblock
+
+The new buffer is read-only and has a few useful bindings defined.
+
+@subsubheading @kbd{RET} or @kbd{j} (@code{ivy-occur-press})
+@vindex ivy-occur-press
+@kindex RET
+@kindex j
+@indentedblock
+Call the current action on the selected candidate.
+@end indentedblock
+@subsubheading @kbd{mouse-1} (@code{ivy-occur-click})
+@vindex ivy-occur-click
+@kindex mouse-1
+@indentedblock
+Call the current action on the selected candidate.
+@end indentedblock
+@subsubheading @kbd{j} (@code{next-line})
+@kindex j
+@indentedblock
+Move to next line.
+@end indentedblock
+@subsubheading @kbd{k} (@code{previous-line})
+@kindex k
+@indentedblock
+Move to previous line.
+@end indentedblock
+@subsubheading @kbd{a} (@code{ivy-occur-read-action})
+@vindex ivy-occur-read-action
+@kindex a
+@indentedblock
+Read an action and make it current for this buffer.
+@end indentedblock
+@subsubheading @kbd{o} (@code{ivy-occur-dispatch})
+@vindex ivy-occur-dispatch
+@kindex o
+@indentedblock
+Read an action and call it on the selected candidate.
+@end indentedblock
+@subsubheading @kbd{q} (@code{quit-window})
+@kindex q
+@indentedblock
+Bury the current buffer.
+@end indentedblock
+
+
+Ivy has no limit on the number of active buffers like these.
+
+Ivy takes care of naming buffers uniquely by constructing descriptive
+names. For example: @code{*ivy-occur counsel-describe-variable
+"function$*}.
+
+@node Completion Styles
+@chapter Completion Styles
+
+Ivy's completion functions rely on a regex builder - a function that
+transforms a string input to a string regex. All current candidates
+simply have to match this regex. Each collection can be assigned its
+own regex builder by customizing @code{ivy-re-builders-alist}.
+
+The keys of this alist are collection names, and the values are one of
+the following:
+@itemize
+@item
+@code{ivy--regex}
+@item
+@code{ivy--regex-plus}
+@item
+@code{ivy--regex-ignore-order}
+@item
+@code{ivy--regex-fuzzy}
+@item
+@code{regexp-quote}
+@end itemize
+
+A catch-all key, @code{t}, applies to all collections that don't have their
+own key.
+
+The default is:
+
+@lisp
+(setq ivy-re-builders-alist
+      '((t . ivy--regex-plus)))
+@end lisp
+
+This example shows a custom regex builder assigned to file name
+completion:
+
+@lisp
+(setq ivy-re-builders-alist
+      '((read-file-name-internal . ivy--regex-fuzzy)
+        (t . ivy--regex-plus)))
+@end lisp
+
+Here, @code{read-file-name-internal} is a function that is passed as the
+second argument to @code{completing-read} for file name completion.
+
+The regex builder resolves as follows (in order of priority):
+@enumerate
+@item
+@code{re-builder} argument passed to @code{ivy-read}.
+@item
+@code{collection} argument passed to @code{ivy-read} is a function and has an
+entry on @code{ivy-re-builders-alist}.
+@item
+@code{caller} argument passed to @code{ivy-read} has an entry on
+@code{ivy-re-builders-alist}.
+@item
+@code{this-command} has an entry on @code{ivy-re-builders-alist}.
+@item
+@code{t} has an entry on @code{ivy-re-builders-alist}.
+@item
+@code{ivy--regex}.
+@end enumerate
+@menu
+* ivy--regex-plus::
+* ivy--regex-ignore-order::
+* ivy--regex-fuzzy::
+@end menu
+
+@node ivy--regex-plus
+@section ivy--regex-plus
+
+@code{ivy--regex-plus} is Ivy's default completion method.
+
+@code{ivy--regex-plus} matches by splitting the input by spaces and
+rebuilding it into a regex.
+
+As the search string is typed in Ivy's minibuffer, it is transformed
+into valid regex syntax. If the string is @code{"for example"}, it is
+transformed into
+
+@lisp
+"\\(for\\).*\\(example\\)"
+@end lisp
+
+which in regex terminology matches @code{"for"} followed by a wild card and
+then @code{"example"}. Note how Ivy uses the space character to build wild
+cards. To match a literal white space, use an extra space. So to match
+one space type two spaces, to match two spaces type three spaces, and
+so on.
+
+As Ivy transforms typed characters into regex strings, it provides an
+intuitive feedback through font highlights.
+
+Ivy supports regexp negation with @code{"!"}.
+For example, @code{"define key ! ivy quit"} first selects everything
+matching @code{"define.*key"}, then removes everything matching @code{"ivy"},
+and finally removes everything matching @code{"quit"}. What remains is the
+final result set of the negation regexp.
+
+Since Ivy treats minibuffer input as a regexp, the standard regexp
+identifiers work: @code{"^"}, @code{"$"}, @code{"\b"} or @code{"[a-z]"}. The exceptions
+are spaces, which translate to @code{".*"}, and @code{"!"} that signal the
+beginning of a negation group.
+
+@node ivy--regex-ignore-order
+@section ivy--regex-ignore-order
+
+@code{ivy--regex-ignore-order} ignores the order of regexp tokens when
+searching for matching candidates. For instance, the input
+@code{"for example"} will match @code{"example test for"}.
+
+@node ivy--regex-fuzzy
+@section ivy--regex-fuzzy
+
+@code{ivy--regex-fuzzy} splits each character with a wild card. Searching
+for @code{"for"} returns all @code{"f.*o.*r"} matches, resulting in a large
+number of hits.  Yet some searches need these extra hits. Ivy sorts
+such large lists using @code{flx} package's scoring mechanism, if it's
+installed.
+
+@kbd{C-o m} toggles the current regexp builder.
+
+@node Customization
+@chapter Customization
+
+@menu
+* Faces::
+* Defcustoms::
+* Actions::
+* Packages::
+@end menu
+
+@node Faces
+@section Faces
+
+@subsubheading @code{ivy-current-match}
+@vindex ivy-current-match
+@indentedblock
+Highlights the currently selected candidate.
+@end indentedblock
+@subsubheading @code{ivy-minibuffer-match-face-1}
+@vindex ivy-minibuffer-match-face-1
+@indentedblock
+Highlights the background of the match.
+@end indentedblock
+@subsubheading @code{ivy-minibuffer-match-face-2}
+@vindex ivy-minibuffer-match-face-2
+@indentedblock
+Highlights the first (modulo 3) matched group.
+@end indentedblock
+@subsubheading @code{ivy-minibuffer-match-face-3}
+@vindex ivy-minibuffer-match-face-3
+@indentedblock
+Highlights the second (modulo 3) matched group.
+@end indentedblock
+@subsubheading @code{ivy-minibuffer-match-face-4}
+@vindex ivy-minibuffer-match-face-4
+@indentedblock
+Highlights the third (modulo 3) matched group.
+@end indentedblock
+@subsubheading @code{ivy-confirm-face}
+@vindex ivy-confirm-face
+@indentedblock
+Highlights the "(confirm)" part of the prompt.
+
+When @code{confirm-nonexistent-file-or-buffer} set to @code{t}, then
+confirming non-existent files in @code{ivy-mode} requires an
+additional @kbd{RET}.
+
+The confirmation prompt will use this face.
+
+For example:
+
+@lisp
+     (setq confirm-nonexistent-file-or-buffer t)
+@end lisp
+
+Then call @code{find-file}, enter "eldorado" and press @kbd{RET} - the
+prompt will be appended with "(confirm)". Press @kbd{RET} once more
+to confirm, or any key to continue the completion.
+@end indentedblock
+@subsubheading @code{ivy-match-required-face}
+@vindex ivy-match-required-face
+@indentedblock
+Highlights the "(match required)" part of the prompt.
+
+When completions have to match available candidates and cannot
+take random input, the "(match required)" prompt signals this
+constraint.
+
+For example, call @code{describe-variable}, enter "waldo" and press
+@kbd{RET} - "(match required)" is prompted.
+Press any key for the prompt to disappear.
+@end indentedblock
+@subsubheading @code{ivy-subdir}
+@vindex ivy-subdir
+@indentedblock
+Highlights directories when completing file names.
+@end indentedblock
+@subsubheading @code{ivy-remote}
+@vindex ivy-remote
+@indentedblock
+Highlights remote files when completing file names.
+@end indentedblock
+@subsubheading @code{ivy-virtual}
+@vindex ivy-virtual
+@indentedblock
+Highlights virtual buffers when completing buffer names.
+
+Virtual buffers correspond to bookmarks and recent files list,
+@code{recentf}.
+
+Enable virtual buffers with:
+
+@lisp
+     (setq ivy-use-virtual-buffers t)
+@end lisp
+@end indentedblock
+
+@node Defcustoms
+@section Defcustoms
+
+@defopt ivy-count-format
+A string that specifies display of number of candidates and
+current candidate, if one exists.
+
+The number of matching candidates by default is shown as a right-
+padded integer value.
+
+To disable showing the number of candidates:
+
+@lisp
+     (setq ivy-count-format "")
+@end lisp
+
+To also display the current candidate:
+
+@lisp
+     (setq ivy-count-format "(%d/%d) ")
+@end lisp
+
+The @code{format}-style switches this variable uses are described
+in the @code{format} documentation.
+@end defopt
+
+@defopt ivy-display-style
+Specifies highlighting candidates in the minibuffer.
+
+The default setting is @code{'fancy} and valid only in Emacs versions
+24.5 or newer.
+
+Set @code{ivy-display-style} to @code{nil} for a plain minibuffer.
+@end defopt
+
+@defopt ivy-on-del-error-function
+Specify what when @kbd{DEL} (@code{ivy-backward-delete-char}) throws.
+
+The default behavior is to quit the completion after @kbd{DEL} -- a
+handy key to invoke after mistakenly triggering a completion.
+@end defopt
+
+@node Actions
+@section Actions
+
+@menu
+* What are actions?::
+* How can different actions be called?::
+* How to modify the actions list?::
+* Example - add two actions to each command::
+* Example - define a new command with several actions::
+@end menu
+
+@node What are actions?
+@subsection What are actions?
+
+An action is a function that is called after you select a candidate
+during completion. This function takes a single string argument, which
+is the selected candidate.
+
+@subsubheading Window context when calling an action
+@indentedblock
+Currently, the action is executed in the minibuffer window
+context. This means e.g. that if you call @code{insert} the text will
+be inserted into the minibuffer.
+
+If you want to execute the action in the initial window from
+which the completion started, use the @code{with-ivy-window} wrapper
+macro.
+
+@lisp
+     (defun ivy-insert-action (x)
+       (with-ivy-window
+         (insert x)))
+@end lisp
+@end indentedblock
+
+@node How can different actions be called?
+@subsection How can different actions be called?
+
+@itemize
+@item
+@kbd{C-m} (@code{ivy-done}) calls the current action.
+@item
+@kbd{M-o} (@code{ivy-dispatching-done}) presents available actions for
+selection, calls it after selection, and then exits.
+@item
+@kbd{C-M-o} (@code{ivy-dispatching-call}) presents available actions for
+selection, calls it after selection, and then does not exit.
+@end itemize
+
+@node How to modify the actions list?
+@subsection How to modify the actions list?
+
+Currently, you can append any amount of your own actions to the
+default list of actions. This can be done either for a specific
+command, or for all commands at once.
+
+Usually, the command has only one default action. The convention is to
+use single letters when selecting a command, and the letter @kbd{o} is
+designated for the default command. This way, @kbd{M-o o} should be always
+equivalent to @kbd{C-m}.
+
+@node Example - add two actions to each command
+@subsection Example - add two actions to each command
+
+The first action inserts the current candidate into the Ivy window -
+the window from which @code{ivy-read} was called.
+
+The second action copies the current candidate to the kill ring.
+
+@lisp
+(defun ivy-yank-action (x)
+  (kill-new x))
+
+(defun ivy-copy-to-buffer-action (x)
+  (with-ivy-window
+    (insert x)))
+
+(ivy-set-actions
+ t
+ '(("i" ivy-copy-to-buffer-action "insert")
+   ("y" ivy-yank-action "yank")))
+@end lisp
+
+Then in any completion session, @kbd{M-o y} invokes @code{ivy-yank-action}, and
+@kbd{M-o i} invokes @code{ivy-copy-to-buffer-action}.
+@menu
+* How to undo adding the two actions::
+* How to add actions to a specific command::
+@end menu
+
+@node How to undo adding the two actions
+@subsubsection How to undo adding the two actions
+
+Since @code{ivy-set-actions} modifies the internal dictionary with new
+data, set the extra actions list to @code{nil} by assigning @code{nil} value to
+the @code{t} key as follows:
+
+@lisp
+(ivy-set-actions t nil)
+@end lisp
+
+@node How to add actions to a specific command
+@subsubsection How to add actions to a specific command
+
+Use the command name as the key:
+
+@lisp
+(ivy-set-actions
+ 'swiper
+ '(("i" ivy-copy-to-buffer-action "insert")
+   ("y" ivy-yank-action "yank")))
+@end lisp
+
+@node Example - define a new command with several actions
+@subsection Example - define a new command with several actions
+
+@lisp
+(defun my-action-1 (x)
+  (message "action-1: %s" x))
+
+(defun my-action-2 (x)
+  (message "action-2: %s" x))
+
+(defun my-action-3 (x)
+  (message "action-3: %s" x))
+
+(defun my-command-with-3-actions ()
+  (interactive)
+  (ivy-read "test: " '("foo" "bar" "baz")
+            :action '(1
+                      ("o" my-action-1 "action 1")
+                      ("j" my-action-2 "action 2")
+                      ("k" my-action-3 "action 3"))))
+@end lisp
+
+The number 1 above is the index of the default action. Each
+action has its own string description for easy selection.
+@menu
+* Test the above function with @code{ivy-occur}::
+@end menu
+
+@node Test the above function with @code{ivy-occur}
+@subsubsection Test the above function with @code{ivy-occur}
+
+To examine each action with each candidate in a key-efficient way, try:
+
+@itemize
+@item
+Call @code{my-command-with-3-actions}
+@item
+Press @kbd{C-c C-o} to close the completion window and move to an
+ivy-occur buffer
+@item
+Press @kbd{kkk} to move to the first candidate, since the point is most
+likely at the end of the buffer
+@item
+Press @kbd{oo} to call the first action
+@item
+Press @kbd{oj} and @kbd{ok} to call the second and the third actions
+@item
+Press @kbd{j} to move to the next candidate
+@item
+Press @kbd{oo}, @kbd{oj}, @kbd{ok}
+@item
+Press @kbd{j} to move to the next candidate
+@item
+and so on@dots{}
+@end itemize
+
+@node Packages
+@section Packages
+
+@subsubheading @code{org-mode}
+@indentedblock
+@code{org-mode} versions 8.3.3 or later obey
+@code{completing-read-function} (which @code{ivy-mode} sets). Try refiling
+headings with similar names to appreciate @code{ivy-mode}.
+@end indentedblock
+@subsubheading @code{magit}
+@indentedblock
+Magit requries this setting for ivy completion:
+
+@lisp
+     (setq magit-completing-read-function 'ivy-completing-read)
+@end lisp
+@end indentedblock
+@subsubheading @code{find-file-in-project}
+@indentedblock
+It uses ivy by default if Ivy is installed.
+@end indentedblock
+@subsubheading @code{projectile}
+@indentedblock
+Projectile requires this seeting for ivy completion:
+
+@lisp
+     (setq projectile-completion-system 'ivy)
+@end lisp
+@end indentedblock
+@subsubheading @code{helm-make}
+@indentedblock
+Helm-make requires this seeting for ivy completion.
+
+@lisp
+     (setq helm-make-completion-method 'ivy)
+@end lisp
+@end indentedblock
+
+@node Commands
+@chapter Commands
+
+@menu
+* File Name Completion::
+* Buffer Name Completion::
+* Counsel commands::
+@end menu
+
+@node File Name Completion
+@section File Name Completion
+
+Since file name completion is ubiquitious, Ivy provides extra
+bindings that work here:
+
+
+@subsubheading @kbd{C-j} (@code{ivy-alt-done})
+@vindex ivy-alt-done
+@kindex C-j
+@indentedblock
+On a directory, restarts completion from that directory.
+
+On a file or @code{./}, exit completion with the selected candidate.
+@end indentedblock
+@subsubheading @kbd{DEL} (@code{ivy-backward-delete-char})
+@vindex ivy-backward-delete-char
+@kindex DEL
+@indentedblock
+Restart the completion in the parent directory if current input
+is empty.
+@end indentedblock
+@subsubheading @kbd{//} (@code{self-insert-command})
+@kindex //
+@indentedblock
+Switch to the root directory.
+@end indentedblock
+@subsubheading @kbd{~} (@code{self-insert-command})
+@kindex ~
+@indentedblock
+Switch to the home directory.
+@end indentedblock
+@subsubheading @kbd{/} (@code{self-insert-command})
+@kindex /
+@indentedblock
+If the current input matches an existing directory name exactly,
+switch the completion to that directory.
+@end indentedblock
+@subsubheading @kbd{M-q} (@code{ivy-toggle-regexp-quote})
+@vindex ivy-toggle-regexp-quote
+@kindex M-q
+@indentedblock
+Toggle between input as regexp or not.
+
+Switch to matching literally since file names include @code{.}, which
+is for matching any char in regexp mode.
+@end indentedblock
+@defopt ivy-extra-directories
+Decide if you want to see @code{../} and @code{./} during file name
+completion.
+
+Reason to remove: @code{../} is the same as @kbd{DEL}.
+
+Reason not to remove: navigate anywhere with only @kbd{C-n}, @kbd{C-p}
+and @kbd{C-j}.
+
+Likewise, @code{./} can be removed.
+@end defopt
+
+@subsubheading Using TRAMP
+@indentedblock
+From any directory, with the empty input, inputting @code{/ssh:} and
+pressing @kbd{C-j} (or @kbd{RET}, which is the same thing) completes for
+host and user names.
+
+For @code{/ssh:user@@} input, completes the domain name.
+
+@kbd{C-i} works in a similar way to the default completion.
+@end indentedblock
+@subsubheading History
+@indentedblock
+File history works the same with @kbd{M-p}, @kbd{M-n}, and @kbd{C-r}, but
+uses a custom code for file name completion that cycles through
+files previously opened. It also works with TRAMP files.
+@end indentedblock
+
+@node Buffer Name Completion
+@section Buffer Name Completion
+
+@defopt ivy-use-virtual-buffers
+When non-nil, add @code{recentf-mode} and bookmarks to
+@code{ivy-switch-buffer} completion candidates.
+
+Adding this to Emacs init file:
+
+@lisp
+     (setq ivy-use-virtual-buffers t)
+@end lisp
+will add additional virual buffers to the buffers list for recent
+files. Selecting such virtual buffers, which are highlighted with
+@code{ivy-virtual} face, will open the corresponding file.
+@end defopt
+
+@node Counsel commands
+@section Counsel commands
+
+The main advantages of @code{counsel-} functions over their basic
+equivalents in @code{ivy-mode} are:
+
+@enumerate
+@item
+Multi-actions and non-exiting actions work.
+@item
+@code{ivy-resume} can resume the last completion session.
+@item
+Customize @code{ivy-set-actions}, @code{ivy-re-builders-alist}.
+@item
+Customize individual keymaps, such as @code{counsel-describe-map},
+@code{counsel-git-grep-map}, or @code{counsel-find-file-map}, instead of
+customizing @code{ivy-minibuffer-map} that applies to all completion
+sessions.
+@end enumerate
+
+@node API
+@chapter API
+
+The main (and only) entry point is the @code{ivy-read} function. It takes
+two required arguments and many optional arguments that can be passed
+by a key. The optional @code{:action} argument is highly recommended for
+features such as multi-actions, non-exiting actions, @code{ivy-occur} and
+@code{ivy-resume}.
+@menu
+* Required arguments for @code{ivy-read}::
+* Optional arguments for @code{ivy-read}::
+* Example - @code{counsel-describe-function}::
+* Example - @code{counsel-locate}::
+@end menu
+
+@node Required arguments for @code{ivy-read}
+@section Required arguments for @code{ivy-read}
+
+@subsubheading @code{prompt}
+@indentedblock
+A format string normally ending in a colon and a space.
+
+@code{%d} anywhere in the string is replaced by the current number of
+matching candidates. To use a literal @code{%} character, escape it as
+@code{%%}. See also @code{ivy-count-format}.
+@end indentedblock
+@subsubheading @code{collection}
+@indentedblock
+Either a list of strings, a function, an alist or a hash table.
+
+If a function, then it has to be compatible with
+@code{all-completions}.
+@end indentedblock
+
+@node Optional arguments for @code{ivy-read}
+@section Optional arguments for @code{ivy-read}
+
+@subsubheading @code{predicate}
+@indentedblock
+Is a function to filter the initial collection. It has to be
+compatible with @code{all-completions}. Tip: most of the time, it's
+simpler to just apply this filter to the @code{collection} argument
+itself, e.g. @code{(cl-remove-if-not predicate collection)}.
+@end indentedblock
+@subsubheading @code{require-match}
+@indentedblock
+When set to a non-nil value, input must match one of the
+candidates. Custom input is not accepted.
+@end indentedblock
+@subsubheading @code{initial-input}
+@indentedblock
+This string argument is included for compatibility with
+@code{completing-read}, which inserts it into the minibuffer.
+
+It's recommended to use the @code{preselect} argument instead of this.
+@end indentedblock
+@subsubheading @code{history}
+@indentedblock
+Name of the symbol to store history. See @code{completing-read}.
+@end indentedblock
+@subsubheading @code{preselect}
+@indentedblock
+When set to a string value, select the first candidate matching
+this value.
+
+When set to an integer value, select the candidate with that
+index value.
+
+Every time the input becomes empty, the item corresponding to to
+@code{preselect} is selected.
+@end indentedblock
+@subsubheading @code{keymap}
+@indentedblock
+A keymap to be composed with @code{ivy-minibuffer-map}. This keymap
+has priority over @code{ivy-minibuffer-map} and can be modified at any
+later stage.
+@end indentedblock
+@subsubheading @code{update-fn}
+@indentedblock
+Is the function called each time the current candidate changes.
+This function takes no arguments and is called in the
+minibuffer's @code{post-command-hook}. See @code{swiper} for an example
+usage.
+@end indentedblock
+@subsubheading @code{sort}
+@indentedblock
+When non-nil, use @code{ivy-sort-functions-alist} to sort the
+collection as long as the collection is not larger than
+@code{ivy-sort-max-size}.
+@end indentedblock
+@subsubheading @code{action}
+@indentedblock
+Is the function to call after selection. It takes a string
+argument.
+@end indentedblock
+@subsubheading @code{unwind}
+@indentedblock
+Is the function to call before exiting completion. It takes no
+arguments. This function is called even if the completion is
+interrupted with @kbd{C-g}. See @code{swiper} for an example usage.
+@end indentedblock
+@subsubheading @code{re-builder}
+@indentedblock
+Is a function that takes a string and returns a valid regex. See
+@code{Completion Styles} for details.
+@end indentedblock
+@subsubheading @code{matcher}
+@indentedblock
+Is a function that takes a regex string and a list of strings and
+returns a list of strings matching the regex. Any ordinary Emacs
+matching function will suffice, yet finely tuned mathing
+functions can be used. See @code{counsel-find-file} for an example
+usage.
+@end indentedblock
+@subsubheading @code{dynamic-collection}
+@indentedblock
+When non-nil, @code{collection} will be used to dynamically generate
+the candidates each time the input changes, instead of being used
+once statically with @code{all-completions} to generate a list of
+strings. See @code{counsel-locate} for an example usage.
+@end indentedblock
+@subsubheading @code{caller}
+@indentedblock
+Is a symbol that uniquely identifies the function that called
+@code{ivy-read}, which may be useful for further customizations.
+@end indentedblock
+
+@node Example - @code{counsel-describe-function}
+@section Example - @code{counsel-describe-function}
+
+This is a typical example of a function with a non-async collection,
+which is a collection where all the strings in the collection are
+known prior to any input from the user.
+
+Only the first two arguments (along with @code{action}) are essential - the
+rest of the arguments are for fine-tuning, and could be omitted.
+
+The @code{action} argument could also be omitted - but then @code{ivy-read}
+would do nothing except returning the string result, which you could
+later use yourself. However, it's recommended that you use the
+@code{action} argument.
+
+@lisp
+(defun counsel-describe-function ()
+  "Forward to `describe-function'."
+  (interactive)
+  (ivy-read "Describe function: "
+            (let (cands)
+              (mapatoms
+               (lambda (x)
+                 (when (fboundp x)
+                   (push (symbol-name x) cands))))
+              cands)
+            :keymap counsel-describe-map
+            :preselect (counsel-symbol-at-point)
+            :history 'counsel-describe-symbol-history
+            :require-match t
+            :sort t
+            :action (lambda (x)
+                      (describe-function
+                       (intern x)))
+            :caller 'counsel-describe-function))
+@end lisp
+
+Here are the interesting features of the above function, in the order that they appear:
+
+@itemize
+@item
+The @code{prompt} argument is a simple string ending in ": ".
+@item
+The @code{collection} argument evaluates to a (large) list of strings.
+@item
+The @code{keymap} argument is for a custom keymap to supplement @code{ivy-minibuffer-map}.
+@item
+The @code{preselect} is provided by @code{counsel-symbol-at-point}, which
+returns a symbol near the point. Ivy then selects the first
+candidate from the collection that matches this symbol. To select
+this pre-selected candidate, a @kbd{RET} will suffice. No further user
+input is necessary.
+@item
+The @code{history} argument is for keeping the history of this command
+separate from the common history in @code{ivy-history}.
+@item
+The @code{require-match} is set to @code{t} since it doesn't make sense to
+call @code{describe-function} on an un-interned symbol.
+@item
+The @code{sort} argument is set to @code{t} so choosing between similar
+candidates becomes easier. Sometimes, the collection size will
+exceed @code{ivy-sort-max-size}, which is 30000 by default. In that case
+the sorting will not happen to avoid delays.
+
+Adjust this variable to choose between sorting time and completion
+start-up time.
+@item
+The @code{action} argument calls @code{describe-function} on the interned
+selected candidate.
+@item
+The @code{caller} argument identifies this completion session. This is
+important, since with the collection being a list of strings and not
+a function name, the only other way for @code{ivy-read} to identify
+"who's calling" and to apply the appropriate customizations is to
+examine @code{this-command}. But @code{this-command} would be modified if
+another command called @code{counsel-describe-function}.
+@end itemize
+
+@node Example - @code{counsel-locate}
+@section Example - @code{counsel-locate}
+
+This is a typical example of a function with an async collection.
+Since the collection function cannot pre-compute all the locatable
+files in memory within reasonable limits (time or memory), it relies
+on user input to filter the universe of possible candidates to a
+manageable size while also continuing to search asynchronously for
+possible candidates. Both the filtering and searching continues with
+each character change of the input with rapid updates to the
+collection presented without idle waiting times. This live update will
+continue as long as there are likely candidates. Eventually updates to
+the minibuffer will stop after user input, filtering, and searching
+have exhausted looking for possible candidates.
+
+Async collections suit long-running shell commands, such as @code{locate}.
+With each new input, a new process starts while the old process is
+killed. The collection is refreshed anew with each new process.
+Meanwhile the user can provide more input characters (for further
+narrowing) or select a candidate from the visible collection.
+
+@lisp
+(defun counsel-locate-function (str)
+  (if (< (length str) 3)
+      (counsel-more-chars 3)
+    (counsel--async-command
+     (format "locate %s '%s'"
+             (mapconcat #'identity counsel-locate-options " ")
+             (counsel-unquote-regex-parens
+              (ivy--regex str))))
+    '("" "working...")))
+
+;;;###autoload
+(defun counsel-locate (&optional initial-input)
+  "Call the \"locate\" shell command.
+INITIAL-INPUT can be given as the initial minibuffer input."
+  (interactive)
+  (ivy-read "Locate: " #'counsel-locate-function
+            :initial-input initial-input
+            :dynamic-collection t
+            :history 'counsel-locate-history
+            :action (lambda (file)
+                      (with-ivy-window
+                        (when file
+                          (find-file file))))
+            :unwind #'counsel-delete-process
+            :caller 'counsel-locate))
+@end lisp
+
+Here are the interesting features of the above functions, in the order
+that they appear:
+
+@itemize
+@item
+@code{counsel-locate-function} takes a string argument and returns a list
+of strings. Note that it's not compatible with @code{all-completions},
+but since we're not using that here, might as well use one argument
+instead of three.
+@item
+@code{counsel-more-chars} is a simple function that returns e.g.
+@code{'("2 chars more")} asking the user for more input.
+@item
+@code{counsel--async-command} is a very easy API simplification that
+takes a single string argument suitable for
+@code{shell-command-to-string}. So you could prototype your function as
+non-async using @code{shell-command-to-string} and @code{split-string} to
+produce a collection, then decide that you want async and simply swap in
+@code{counsel--async-command}.
+@item
+@code{counsel-locate} is an interactive function with an optional @code{initial-input}.
+@item
+@code{#'counsel-locate-function} is passed as the @code{collection} argument.
+@item
+@code{dynamic-collection} is set to t, since this is an async collection.
+@item
+@code{action} argument uses @code{with-ivy-window} wrapper, since we want to open the
+selected file in the same window from which @code{counsel-locate} was
+called.
+@item
+@code{unwind} argument is set to @code{#'counsel-delete-process}: when we press @kbd{C-g}
+we want to kill the running process created by
+@code{counsel--async-command}.
+@item
+@code{caller} argument identifies this command for easier customization.
+@end itemize
+
+@node Variable Index
+@unnumbered Variable Index
+
+@printindex vr
+
+@node Keystroke Index
+@unnumbered Keystroke Index
+
+@printindex ky
+
+@bye
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/ivy-autoloads.el
@@ -0,0 +1,297 @@
+;;; ivy-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
+
+;;;### (autoloads nil "counsel" "counsel.el" (22708 23353 838992
+;;;;;;  99000))
+;;; Generated autoloads from counsel.el
+
+(autoload 'counsel-el "counsel" "\
+Elisp completion at point.
+
+\(fn)" t nil)
+
+(autoload 'counsel-cl "counsel" "\
+Common Lisp completion at point.
+
+\(fn)" t nil)
+
+(autoload 'counsel-clj "counsel" "\
+Clojure completion at point.
+
+\(fn)" t nil)
+
+(autoload 'counsel-unicode-char "counsel" "\
+Insert a Unicode character at point.
+
+\(fn)" t nil)
+
+(autoload 'counsel-describe-variable "counsel" "\
+Forward to `describe-variable'.
+
+\(fn)" t nil)
+
+(autoload 'counsel-describe-function "counsel" "\
+Forward to `describe-function'.
+
+\(fn)" t nil)
+
+(autoload 'counsel-info-lookup-symbol "counsel" "\
+Forward to (`info-describe-symbol' SYMBOL MODE) with ivy completion.
+
+\(fn SYMBOL &optional MODE)" t nil)
+
+(autoload 'counsel-M-x "counsel" "\
+Ivy version of `execute-extended-command'.
+Optional INITIAL-INPUT is the initial input in the minibuffer.
+
+\(fn &optional INITIAL-INPUT)" t nil)
+
+(autoload 'counsel-load-library "counsel" "\
+Load a selected the Emacs Lisp library.
+The libraries are offered from `load-path'.
+
+\(fn)" t nil)
+
+(autoload 'counsel-load-theme "counsel" "\
+Forward to `load-theme'.
+Usable with `ivy-resume', `ivy-next-line-and-call' and
+`ivy-previous-line-and-call'.
+
+\(fn)" t nil)
+
+(autoload 'counsel-descbinds "counsel" "\
+Show a list of all defined keys, and their definitions.
+Describe the selected candidate.
+
+\(fn &optional PREFIX BUFFER)" t nil)
+
+(autoload 'counsel-git "counsel" "\
+Find file in the current Git repository.
+
+\(fn)" t nil)
+
+(autoload 'counsel-git-grep "counsel" "\
+Grep for a string in the current git repository.
+When CMD is a string, use it as a \"git grep\" command.
+When CMD is non-nil, prompt for a specific \"git grep\" command.
+INITIAL-INPUT can be given as the initial minibuffer input.
+
+\(fn &optional CMD INITIAL-INPUT)" t nil)
+
+(autoload 'counsel-git-stash "counsel" "\
+Search through all available git stashes.
+
+\(fn)" t nil)
+
+(autoload 'counsel-git-log "counsel" "\
+Call the \"git log --grep\" shell command.
+
+\(fn)" t nil)
+
+(autoload 'counsel-find-file "counsel" "\
+Forward to `find-file'.
+When INITIAL-INPUT is non-nil, use it in the minibuffer during completion.
+
+\(fn &optional INITIAL-INPUT)" t nil)
+
+(autoload 'counsel-locate "counsel" "\
+Call the \"locate\" shell command.
+INITIAL-INPUT can be given as the initial minibuffer input.
+
+\(fn &optional INITIAL-INPUT)" t nil)
+
+(autoload 'counsel-ag "counsel" "\
+Grep for a string in the current directory using ag.
+INITIAL-INPUT can be given as the initial minibuffer input.
+
+\(fn &optional INITIAL-INPUT INITIAL-DIRECTORY)" t nil)
+
+(autoload 'counsel-pt "counsel" "\
+Grep for a string in the current directory using pt.
+This uses `counsel-ag' with `counsel-pt-base-command' replacing
+`counsel-ag-base-command'.
+
+\(fn)" t nil)
+
+(autoload 'counsel-grep "counsel" "\
+Grep for a string in the current file.
+
+\(fn)" t nil)
+
+(autoload 'counsel-grep-or-swiper "counsel" "\
+Call `swiper' for small buffers and `counsel-grep' for large ones.
+
+\(fn)" t nil)
+
+(autoload 'counsel-org-tag "counsel" "\
+Add or remove tags in org-mode.
+
+\(fn)" t nil)
+
+(autoload 'counsel-org-tag-agenda "counsel" "\
+Set tags for the current agenda item.
+
+\(fn)" t nil)
+
+(autoload 'counsel-tmm "counsel" "\
+Text-mode emulation of looking and choosing from a menubar.
+
+\(fn)" t nil)
+
+(autoload 'counsel-yank-pop "counsel" "\
+Ivy replacement for `yank-pop'.
+
+\(fn)" t nil)
+
+(autoload 'counsel-imenu "counsel" "\
+Jump to a buffer position indexed by imenu.
+
+\(fn)" t nil)
+
+(autoload 'counsel-list-processes "counsel" "\
+Offer completion for `process-list'
+The default action deletes the selected process.
+An extra action allows to switch to the process buffer.
+
+\(fn)" t nil)
+
+(autoload 'counsel-expression-history "counsel" "\
+Select an element of `read-expression-history'.
+And insert it into the minibuffer. Useful during
+`eval-expression'
+
+\(fn)" t nil)
+
+(autoload 'counsel-esh-history "counsel" "\
+Browse Eshell history.
+
+\(fn)" t nil)
+
+(autoload 'counsel-shell-history "counsel" "\
+Browse shell history.
+
+\(fn)" t nil)
+
+(autoload 'counsel-rhythmbox "counsel" "\
+Choose a song from the Rhythmbox library to play or enqueue.
+
+\(fn)" t nil)
+
+(autoload 'counsel-linux-app "counsel" "\
+Launch a Linux desktop application, similar to Alt-<F2>.
+
+\(fn)" t nil)
+
+(defvar counsel-mode nil "\
+Non-nil if Counsel mode is enabled.
+See the command `counsel-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `counsel-mode'.")
+
+(custom-autoload 'counsel-mode "counsel" nil)
+
+(autoload 'counsel-mode "counsel" "\
+Toggle Counsel mode on or off.
+Turn Counsel mode on if ARG is positive, off otherwise. Counsel
+mode remaps built-in emacs functions that have counsel
+replacements. 
+
+\(fn &optional ARG)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "ivy" "ivy.el" (22708 23353 846992 130000))
+;;; Generated autoloads from ivy.el
+
+(autoload 'ivy-resume "ivy" "\
+Resume the last completion session.
+
+\(fn)" t nil)
+
+(autoload 'ivy-completing-read "ivy" "\
+Read a string in the minibuffer, with completion.
+
+This interface conforms to `completing-read' and can be used for
+`completing-read-function'.
+
+PROMPT is a string that normally ends in a colon and a space.
+COLLECTION is either a list of strings, an alist, an obarray, or a hash table.
+PREDICATE limits completion to a subset of COLLECTION.
+REQUIRE-MATCH is a boolean value.  See `completing-read'.
+INITIAL-INPUT is a string inserted into the minibuffer initially.
+HISTORY is a list of previously selected inputs.
+DEF is the default value.
+INHERIT-INPUT-METHOD is currently ignored.
+
+\(fn PROMPT COLLECTION &optional PREDICATE REQUIRE-MATCH INITIAL-INPUT HISTORY DEF INHERIT-INPUT-METHOD)" nil nil)
+
+(defvar ivy-mode nil "\
+Non-nil if Ivy mode is enabled.
+See the command `ivy-mode' for a description of this minor mode.
+Setting this variable directly does not take effect;
+either customize it (see the info node `Easy Customization')
+or call the function `ivy-mode'.")
+
+(custom-autoload 'ivy-mode "ivy" nil)
+
+(autoload 'ivy-mode "ivy" "\
+Toggle Ivy mode on or off.
+Turn Ivy mode on if ARG is positive, off otherwise.
+Turning on Ivy mode sets `completing-read-function' to
+`ivy-completing-read'.
+
+Global bindings:
+\\{ivy-mode-map}
+
+Minibuffer bindings:
+\\{ivy-minibuffer-map}
+
+\(fn &optional ARG)" t nil)
+
+(autoload 'ivy-switch-buffer "ivy" "\
+Switch to another buffer.
+
+\(fn)" t nil)
+
+(autoload 'ivy-switch-buffer-other-window "ivy" "\
+Switch to another buffer in another window.
+
+\(fn)" t nil)
+
+(autoload 'ivy-recentf "ivy" "\
+Find a file on `recentf-list'.
+
+\(fn)" t nil)
+
+;;;***
+
+;;;### (autoloads nil "swiper" "swiper.el" (22708 23353 866992 207000))
+;;; Generated autoloads from swiper.el
+
+(autoload 'swiper-avy "swiper" "\
+Jump to one of the current swiper candidates.
+
+\(fn)" t nil)
+
+(autoload 'swiper "swiper" "\
+`isearch' with an overview.
+When non-nil, INITIAL-INPUT is the initial search pattern.
+
+\(fn &optional INITIAL-INPUT)" t nil)
+
+;;;***
+
+;;;### (autoloads nil nil ("colir.el" "ivy-hydra.el" "ivy-pkg.el"
+;;;;;;  "ivy-test.el") (22708 23353 892197 664000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; ivy-autoloads.el ends here
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/ivy-hydra.el
@@ -0,0 +1,93 @@
+;;; ivy-hydra.el --- Additional key bindings for Ivy  -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package provides the `hydra-ivy/body' command, which is a
+;; quasi-prefix map, with many useful bindings.  These bindings are
+;; shorter than usual, using mostly unprefixed keys.
+
+;;; Code:
+(require 'hydra nil t)
+(require 'ivy)
+
+(eval-when-compile
+  (unless (or (featurep 'hydra) (package-installed-p 'hydra))
+    (defmacro defhydra (name &rest _)
+      "This is a stub for the uninstalled `hydra' package."
+      `(defun ,(intern (format "%S/body" name)) ()
+         (interactive)
+         (let ((enable-recursive-minibuffers t))
+           (if (yes-or-no-p "Package `hydra' not installed. Install?")
+               (progn
+                 (package-install 'hydra)
+                 (save-window-excursion
+                   (find-library "ivy-hydra")
+                   (byte-compile-file (buffer-file-name) t)))
+             (error "Please install `hydra' and recompile/reinstall `ivy-hydra'")))))))
+
+(defun ivy--matcher-desc ()
+  (if (eq ivy--regex-function
+          'ivy--regex-fuzzy)
+      "fuzzy"
+    "ivy"))
+
+(defhydra hydra-ivy (:hint nil
+                     :color pink)
+  "
+^ ^ ^ ^ ^ ^ | ^Call^      ^ ^  | ^Cancel^ | ^Options^ | Action _w_/_s_/_a_: %-14s(ivy-action-name)
+^-^-^-^-^-^-+-^-^---------^-^--+-^-^------+-^-^-------+-^^^^^^^^^^^^^^^^^^^^^^^^^^^^^---------------------------
+^ ^ _k_ ^ ^ | _f_ollow occ_u_r | _i_nsert | _c_: calling %-5s(if ivy-calling \"on\" \"off\") _C_ase-fold: %-10`ivy-case-fold-search
+_h_ ^+^ _l_ | _d_one      ^ ^  | _o_ops   | _m_: matcher %-5s(ivy--matcher-desc)^^^^^^^^^^^^ _t_runcate: %-11`truncate-lines
+^ ^ _j_ ^ ^ | _g_o        ^ ^  | ^ ^      | _<_/_>_: shrink/grow^^^^^^^^^^^^^^^^^^^^^^^^^^^^ _D_efinition of this menu
+"
+  ;; arrows
+  ("h" ivy-beginning-of-buffer)
+  ("j" ivy-next-line)
+  ("k" ivy-previous-line)
+  ("l" ivy-end-of-buffer)
+  ;; actions
+  ("o" keyboard-escape-quit :exit t)
+  ("C-g" keyboard-escape-quit :exit t)
+  ("i" nil)
+  ("C-o" nil)
+  ("f" ivy-alt-done :exit nil)
+  ("C-j" ivy-alt-done :exit nil)
+  ("d" ivy-done :exit t)
+  ("g" ivy-call)
+  ("C-m" ivy-done :exit t)
+  ("c" ivy-toggle-calling)
+  ("m" ivy-toggle-fuzzy)
+  (">" ivy-minibuffer-grow)
+  ("<" ivy-minibuffer-shrink)
+  ("w" ivy-prev-action)
+  ("s" ivy-next-action)
+  ("a" ivy-read-action)
+  ("t" (setq truncate-lines (not truncate-lines)))
+  ("C" ivy-toggle-case-fold)
+  ("u" ivy-occur :exit t)
+  ("D" (ivy-exit-with-action
+        (lambda (_) (find-function 'hydra-ivy/body)))
+       :exit t))
+
+(provide 'ivy-hydra)
+
+;;; ivy-hydra.el ends here
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/ivy-pkg.el
@@ -0,0 +1,2 @@
+;; Generated package description from ivy.el
+(define-package "ivy" "0.8.0" "Incremental Vertical completYon" '((emacs "24.1")) :url "https://github.com/abo-abo/swiper" :keywords '("matching"))
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/ivy-test.el
@@ -0,0 +1,206 @@
+;;; ivy-test.el --- tests for ivy
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+(require 'ert)
+
+;; useful for #'ivy-read-remap. It must arrive before (require 'ivy)
+(define-key global-map (kbd "<S-right>") #'end-of-buffer)
+
+(require 'ivy)
+(require 'counsel)
+
+(defvar ivy-expr nil
+  "Holds a test expression to evaluate with `ivy-eval'.")
+
+(defvar ivy-result nil
+  "Holds the eval result of `ivy-expr' by `ivy-eval'.")
+
+(defun ivy-eval ()
+  "Evaluate `ivy-expr'."
+  (interactive)
+  (setq ivy-result (eval ivy-expr)))
+
+(global-set-key (kbd "C-c e") 'ivy-eval)
+
+(defun ivy-with (expr keys)
+  "Evaluate EXPR followed by KEYS."
+  (let ((ivy-expr expr))
+    (execute-kbd-macro
+     (vconcat (kbd "C-c e")
+              (kbd keys)))
+    ivy-result))
+
+(ert-deftest ivy-read ()
+  (should (equal
+           (ivy-with '(ivy-read "pattern: " '("blue" "yellow"))
+                     "C-m")
+           "blue"))
+  (should (equal
+           (ivy-with '(ivy-read "pattern: " '("blue" "yellow"))
+                     "y C-m")
+           "yellow"))
+  (should (equal
+           (ivy-with '(ivy-read "pattern: " '("blue" "yellow"))
+                     "y DEL b C-m")
+           "blue"))
+  (should (equal
+           (ivy-with '(ivy-read "pattern: " '("blue" "yellow"))
+                     "z C-m")
+           "z"))
+  (should (equal
+           (ivy-with '(ivy-read "pattern: " '("blue" "yellow"))
+                     "y <backspace> C-m")
+           "blue"))
+  (should (equal
+           (ivy-with '(let ((ivy-re-builders-alist '((t . ivy--regex-fuzzy))))
+                       (ivy-read "pattern: " '("package-list-packages" "something-else")))
+                     "plp C-m")
+           "package-list-packages"))
+  (should (equal
+           (ivy-with '(ivy-read "test" '("aaab" "aaac"))
+                     "a C-n <tab> C-m")
+           "aaac"))
+  (should (equal
+           (ivy-with '(ivy-read "test" '(("foo" . "bar")))
+                     "asdf C-m")
+           "asdf"))
+  (should (equal
+           (ivy-with
+            '(with-output-to-string
+              (ivy-read "test" '(("foo" . "bar"))
+               :action (lambda (x) (prin1 x))))
+            "f C-m")
+           "\"bar\""))
+  (should (equal
+           (ivy-with
+            '(with-output-to-string
+              (ivy-read "test" '(("foo" . "bar"))
+               :action (lambda (x) (prin1 x))))
+            "asdf C-m")
+           "\"asdf\""))
+  (should (equal
+           (ivy-with '(ivy-read "pattern: " '("can do" "can" "can't do"))
+                     "can C-m")
+           "can")))
+
+(ert-deftest ivy-read-remap ()
+  (should (equal
+           (ivy-with '(ivy-read "pattern: " '("blue" "yellow" "red"))
+                  "<S-right> C-m")
+           "red")))
+
+(ert-deftest swiper--re-builder ()
+  (setq swiper--width 4)
+  (should (string= (swiper--re-builder "^")
+                   "."))
+  (should (string= (swiper--re-builder "^a")
+                   "^ ?\\(a\\)"))
+  (should (string= (swiper--re-builder "^a b")
+                   "^ \\(a\\).*?\\(b\\)")))
+
+(ert-deftest ivy--split ()
+  (should (equal (ivy--split "King of the who?")
+                 '("King" "of" "the" "who?")))
+  (should (equal (ivy--split "The  Brittons.")
+                 '("The Brittons.")))
+  (should (equal (ivy--split "Who  are the  Brittons?")
+                 '("Who are" "the Brittons?")))
+  (should (equal (ivy--split "We're  all  Britons and   I   am your   king.")
+                 '("We're all Britons"
+                   "and  I  am"
+                   "your  king.")))
+  (should (equal (ivy--split "^[^ ]") '("^[^ ]")))
+  (should (equal (ivy--split "^[^ ] bar") '("^[^ ]" "bar"))))
+
+(ert-deftest ivy--regex ()
+  (should (equal (ivy--regex
+                  "\\(?:interactive\\|swiper\\) \\(?:list\\|symbol\\)")
+                 "\\(\\(?:interactive\\|swiper\\)\\).*?\\(\\(?:list\\|symbol\\)\\)")))
+
+(ert-deftest ivy--regex-fuzzy ()
+  (should (string= (ivy--regex-fuzzy "tmux")
+                   "\\(t\\).*\\(m\\).*\\(u\\).*\\(x\\)"))
+  (should (string= (ivy--regex-fuzzy "^tmux")
+                   "^\\(t\\).*\\(m\\).*\\(u\\).*\\(x\\)"))
+  (should (string= (ivy--regex-fuzzy "^tmux$")
+                   "^\\(t\\).*\\(m\\).*\\(u\\).*\\(x\\)$"))
+  (should (string= (ivy--regex-fuzzy "")
+                   ""))
+  (should (string= (ivy--regex-fuzzy "^")
+                   "^"))
+  (should (string= (ivy--regex-fuzzy "$")
+                   "$")))
+
+(ert-deftest ivy--regex-ignore-order ()
+  (should (equal (ivy--regex-ignore-order "tmux")
+                 '(("tmux" . t))))
+  (should (equal (ivy--regex-ignore-order "^tmux")
+                 '(("^tmux" . t))))
+  (should (equal (ivy--regex-ignore-order "^tmux$")
+                 '(("^tmux$" . t))))
+  (should (equal (ivy--regex-ignore-order "")
+                 ""))
+  (should (equal (ivy--regex-ignore-order "^")
+                 '(("^" . t))))
+  (should (equal (ivy--regex-ignore-order "$")
+                 '(("$" . t))))
+  (should (equal (ivy--regex-ignore-order "one two")
+                 '(("one" . t) ("two" . t))))
+  (should (equal (ivy--regex-ignore-order "one two !three")
+                 '(("one" . t) ("two" . t) ("three"))))
+  (should (equal (ivy--regex-ignore-order "one two !three four")
+                 '(("one" . t) ("two" . t) ("three") ("four"))))
+  (should (equal (ivy--regex-ignore-order "!three four")
+                 '(("" . t) (("three") ("four"))))))
+
+(ert-deftest ivy--format ()
+  (should (string= (let ((ivy--index 10)
+                         (ivy-format-function (lambda (x) (mapconcat #'identity x "\n")))
+                         (cands '("NAME"
+                                  "SYNOPSIS"
+                                  "DESCRIPTION"
+                                  "FUNCTION LETTERS"
+                                  "SWITCHES"
+                                  "DIAGNOSTICS"
+                                  "EXAMPLE 1"
+                                  "EXAMPLE 2"
+                                  "EXAMPLE 3"
+                                  "SEE ALSO"
+                                  "AUTHOR")))
+                     (ivy--format cands))
+                   #("\nDESCRIPTION\nFUNCTION LETTERS\nSWITCHES\nDIAGNOSTICS\nEXAMPLE 1\nEXAMPLE 2\nEXAMPLE 3\nSEE ALSO\nAUTHOR"
+                     0 90 (read-only nil)
+                     90 96 (face ivy-current-match read-only nil)))))
+
+(ert-deftest ivy--filter ()
+  (setq ivy-last (make-ivy-state))
+  (should (equal (ivy--filter "the" '("foo" "the" "The"))
+                 '("the" "The")))
+  (should (equal (ivy--filter "The" '("foo" "the" "The"))
+                 '("The"))))
+
+(ert-deftest counsel-unquote-regex-parens ()
+  (should (equal (counsel-unquote-regex-parens
+                  (ivy--regex "foo bar"))
+                 "(foo).*?(bar)"))
+  (should (equal (counsel-unquote-regex-parens
+                  (ivy--regex "(foo bar"))
+                 "(\\(foo).*?(bar)")))
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/ivy.el
@@ -0,0 +1,3108 @@
+;;; ivy.el --- Incremental Vertical completYon -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel <ohwoeowho@gmail.com>
+;; URL: https://github.com/abo-abo/swiper
+;; Version: 0.8.0
+;; Package-Requires: ((emacs "24.1"))
+;; Keywords: matching
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package provides `ivy-read' as an alternative to
+;; `completing-read' and similar functions.
+;;
+;; There's no intricate code to determine the best candidate.
+;; Instead, the user can navigate to it with `ivy-next-line' and
+;; `ivy-previous-line'.
+;;
+;; The matching is done by splitting the input text by spaces and
+;; re-building it into a regex.
+;; So "for example" is transformed into "\\(for\\).*\\(example\\)".
+
+;;; Code:
+(require 'cl-lib)
+(require 'ffap)
+
+;;* Customization
+(defgroup ivy nil
+  "Incremental vertical completion."
+  :group 'convenience)
+
+(defgroup ivy-faces nil
+  "Font-lock faces for `ivy'."
+  :group 'ivy
+  :group 'faces)
+
+(defface ivy-current-match
+  '((((class color) (background light))
+     :background "#1a4b77" :foreground "white")
+    (((class color) (background dark))
+     :background "#65a7e2" :foreground "black"))
+  "Face used by Ivy for highlighting the current match.")
+
+(defface ivy-minibuffer-match-face-1
+  '((((class color) (background light))
+     :background "#d3d3d3")
+    (((class color) (background dark))
+     :background "#555555"))
+  "The background face for `ivy' minibuffer matches.")
+
+(defface ivy-minibuffer-match-face-2
+  '((((class color) (background light))
+     :background "#e99ce8" :weight bold)
+    (((class color) (background dark))
+     :background "#777777" :weight bold))
+  "Face for `ivy' minibuffer matches numbered 1 modulo 3.")
+
+(defface ivy-minibuffer-match-face-3
+  '((((class color) (background light))
+     :background "#bbbbff" :weight bold)
+    (((class color) (background dark))
+     :background "#7777ff" :weight bold))
+  "Face for `ivy' minibuffer matches numbered 2 modulo 3.")
+
+(defface ivy-minibuffer-match-face-4
+  '((((class color) (background light))
+     :background "#ffbbff" :weight bold)
+    (((class color) (background dark))
+     :background "#8a498a" :weight bold))
+  "Face for `ivy' minibuffer matches numbered 3 modulo 3.")
+
+(defface ivy-confirm-face
+  '((t :foreground "ForestGreen" :inherit minibuffer-prompt))
+  "Face used by Ivy for a confirmation prompt.")
+
+(defface ivy-match-required-face
+  '((t :foreground "red" :inherit minibuffer-prompt))
+  "Face used by Ivy for a match required prompt.")
+
+(defface ivy-subdir
+  '((t :inherit dired-directory))
+  "Face used by Ivy for highlighting subdirs in the alternatives.")
+
+(defface ivy-modified-buffer
+  '((t :inherit default))
+  "Face used by Ivy for highlighting modified file visiting buffers.")
+
+(defface ivy-remote
+  '((t :foreground "#110099"))
+  "Face used by Ivy for highlighting remotes in the alternatives.")
+
+(defface ivy-virtual
+  '((t :inherit font-lock-builtin-face))
+  "Face used by Ivy for matching virtual buffer names.")
+
+(defface ivy-action
+  '((t :inherit font-lock-builtin-face))
+  "Face used by Ivy for displaying keys in `ivy-read-action'.")
+
+(setcdr (assoc load-file-name custom-current-group-alist) 'ivy)
+
+(defcustom ivy-height 10
+  "Number of lines for the minibuffer window."
+  :type 'integer)
+
+(defcustom ivy-count-format "%-4d "
+  "The style to use for displaying the current candidate count for `ivy-read'.
+Set this to \"\" to suppress the count visibility.
+Set this to \"(%d/%d) \" to display both the index and the count."
+  :type '(choice
+          (const :tag "Count disabled" "")
+          (const :tag "Count matches" "%-4d ")
+          (const :tag "Count matches and show current match" "(%d/%d) ")
+          string))
+
+(defcustom ivy-add-newline-after-prompt nil
+  "When non-nil, add a newline after the `ivy-read' prompt."
+  :type 'boolean)
+
+(defcustom ivy-wrap nil
+  "When non-nil, wrap around after the first and the last candidate."
+  :type 'boolean)
+
+(defcustom ivy-display-style (unless (version< emacs-version "24.5") 'fancy)
+  "The style for formatting the minibuffer.
+
+By default, the matched strings are copied as is.
+
+The fancy display style highlights matching parts of the regexp,
+a behavior similar to `swiper'.
+
+This setting depends on `add-face-text-property' - a C function
+available as of Emacs 24.5. Fancy style will render poorly in
+earlier versions of Emacs."
+  :type '(choice
+          (const :tag "Plain" nil)
+          (const :tag "Fancy" fancy)))
+
+(defcustom ivy-on-del-error-function 'minibuffer-keyboard-quit
+  "The handler for when `ivy-backward-delete-char' throws.
+Usually a quick exit out of the minibuffer."
+  :type 'function)
+
+(defcustom ivy-extra-directories '("../" "./")
+  "Add this to the front of the list when completing file names.
+Only \"./\" and \"../\" apply here. They appear in reverse order."
+  :type '(repeat :tag "Dirs"
+          (choice
+           (const :tag "Parent Directory" "../")
+           (const :tag "Current Directory" "./"))))
+
+(defcustom ivy-use-virtual-buffers nil
+  "When non-nil, add `recentf-mode' and bookmarks to `ivy-switch-buffer'."
+  :type 'boolean)
+
+(defvar ivy--actions-list nil
+  "A list of extra actions per command.")
+
+(defun ivy-set-actions (cmd actions)
+  "Set CMD extra exit points to ACTIONS."
+  (setq ivy--actions-list
+        (plist-put ivy--actions-list cmd actions)))
+
+(defvar ivy--display-transformers-list nil
+  "A list of str->str transformers per command.")
+
+(defun ivy-set-display-transformer (cmd transformer)
+  "Set CMD a displayed candidate TRANSFORMER.
+
+It's a lambda that takes a string one of the candidates in the
+collection and returns a string for display, the same candidate
+plus some extra information.
+
+This lambda is called only on the `ivy-height' candidates that
+are about to be displayed, not on the whole collection."
+  (setq ivy--display-transformers-list
+        (plist-put ivy--display-transformers-list cmd transformer)))
+
+(defvar ivy--sources-list nil
+  "A list of extra sources per command.")
+
+(defun ivy-set-sources (cmd sources)
+  "Attach to CMD a list of extra SOURCES.
+
+Each static source is a function that takes no argument and
+returns a list of strings.
+
+The '(original-source) determines the position of the original
+dynamic source.
+
+Extra dynamic sources aren't supported yet.
+
+Example:
+
+    (defun small-recentf ()
+      (cl-subseq recentf-list 0 20))
+
+    (ivy-set-sources
+     'counsel-locate
+     '((small-recentf)
+       (original-source)))
+"
+  (setq ivy--sources-list
+        (plist-put ivy--sources-list cmd sources)))
+
+;;* Keymap
+(require 'delsel)
+(defvar ivy-minibuffer-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-m") 'ivy-done)
+    (define-key map (kbd "C-M-m") 'ivy-call)
+    (define-key map (kbd "C-j") 'ivy-alt-done)
+    (define-key map (kbd "C-M-j") 'ivy-immediate-done)
+    (define-key map (kbd "TAB") 'ivy-partial-or-done)
+    (define-key map [remap next-line] 'ivy-next-line)
+    (define-key map [remap previous-line] 'ivy-previous-line)
+    (define-key map (kbd "C-s") 'ivy-next-line-or-history)
+    (define-key map (kbd "C-r") 'ivy-reverse-i-search)
+    (define-key map (kbd "SPC") 'self-insert-command)
+    (define-key map [remap delete-backward-char] 'ivy-backward-delete-char)
+    (define-key map [remap backward-kill-word] 'ivy-backward-kill-word)
+    (define-key map [remap delete-char] 'ivy-delete-char)
+    (define-key map [remap forward-char] 'ivy-forward-char)
+    (define-key map [remap kill-word] 'ivy-kill-word)
+    (define-key map [remap beginning-of-buffer] 'ivy-beginning-of-buffer)
+    (define-key map [remap end-of-buffer] 'ivy-end-of-buffer)
+    (define-key map (kbd "M-n") 'ivy-next-history-element)
+    (define-key map (kbd "M-p") 'ivy-previous-history-element)
+    (define-key map (kbd "C-g") 'minibuffer-keyboard-quit)
+    (define-key map [remap scroll-up-command] 'ivy-scroll-up-command)
+    (define-key map [remap scroll-down-command] 'ivy-scroll-down-command)
+    (define-key map (kbd "C-M-n") 'ivy-next-line-and-call)
+    (define-key map (kbd "C-M-p") 'ivy-previous-line-and-call)
+    (define-key map (kbd "M-q") 'ivy-toggle-regexp-quote)
+    (define-key map (kbd "M-j") 'ivy-yank-word)
+    (define-key map (kbd "M-i") 'ivy-insert-current)
+    (define-key map (kbd "C-o") 'hydra-ivy/body)
+    (define-key map (kbd "M-o") 'ivy-dispatching-done)
+    (define-key map (kbd "C-M-o") 'ivy-dispatching-call)
+    (define-key map [remap kill-line] 'ivy-kill-line)
+    (define-key map (kbd "S-SPC") 'ivy-restrict-to-matches)
+    (define-key map [remap kill-ring-save] 'ivy-kill-ring-save)
+    (define-key map (kbd "C-'") 'ivy-avy)
+    (define-key map (kbd "C-M-a") 'ivy-read-action)
+    (define-key map (kbd "C-c C-o") 'ivy-occur)
+    (define-key map (kbd "C-c C-a") 'ivy-toggle-ignore)
+    (define-key map [remap describe-mode] 'ivy-help)
+    map)
+  "Keymap used in the minibuffer.")
+(autoload 'hydra-ivy/body "ivy-hydra" "" t)
+
+(defvar ivy-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [remap switch-to-buffer]
+      'ivy-switch-buffer)
+    (define-key map [remap switch-to-buffer-other-window]
+      'ivy-switch-buffer-other-window)
+    map)
+  "Keymap for `ivy-mode'.")
+
+;;* Globals
+(cl-defstruct ivy-state
+  prompt collection
+  predicate require-match initial-input
+  history preselect keymap update-fn sort
+  ;; The window in which `ivy-read' was called
+  window
+  ;; The buffer in which `ivy-read' was called
+  buffer
+  ;; The value of `ivy-text' to be used by `ivy-occur'
+  text
+  action
+  unwind
+  re-builder
+  matcher
+  ;; When this is non-nil, call it for each input change to get new candidates
+  dynamic-collection
+  ;; A lambda that transforms candidates only for display
+  display-transformer-fn
+  caller)
+
+(defvar ivy-last (make-ivy-state)
+  "The last parameters passed to `ivy-read'.
+
+This should eventually become a stack so that you could use
+`ivy-read' recursively.")
+
+(defsubst ivy-set-action (action)
+  (setf (ivy-state-action ivy-last) action))
+
+(defun ivy-thing-at-point ()
+  "Return a string that corresponds to the current thing at point."
+  (or
+   (thing-at-point 'url)
+   (and (eq (ivy-state-collection ivy-last) 'read-file-name-internal)
+        (ffap-file-at-point))
+   (let (s)
+     (cond ((stringp (setq s (thing-at-point 'symbol)))
+            (if (string-match "\\`[`']?\\(.*?\\)'?\\'" s)
+                (match-string 1 s)
+              s))
+           ((looking-at "(+\\(\\(?:\\sw\\|\\s_\\)+\\)\\_>")
+            (match-string-no-properties 1))
+           (t
+            "")))))
+
+(defvar ivy-history nil
+  "History list of candidates entered in the minibuffer.
+
+Maximum length of the history list is determined by the value
+of `history-length'.")
+
+(defvar ivy--directory nil
+  "Current directory when completing file names.")
+
+(defvar ivy--length 0
+  "Store the amount of viable candidates.")
+
+(defvar ivy-text ""
+  "Store the user's string as it is typed in.")
+
+(defvar ivy--current ""
+  "Current candidate.")
+
+(defvar ivy--index 0
+  "Store the index of the current candidate.")
+
+(defvar ivy-exit nil
+  "Store 'done if the completion was successfully selected.
+Otherwise, store nil.")
+
+(defvar ivy--all-candidates nil
+  "Store the candidates passed to `ivy-read'.")
+
+(defvar ivy--extra-candidates '((original-source))
+  "Store candidates added by the extra sources.
+
+This is an internal-use alist. Each key is a function name, or
+original-source (which represents where the current dynamic
+candidates should go).
+
+Each value is an evaluation of the function, in case of static
+sources. These values will subsequently be filtered on `ivy-text'.
+
+This variable is set by `ivy-read' and used by `ivy--set-candidates'.")
+
+(defcustom ivy-use-ignore-default t
+  "The default policy for user-configured candidate filtering."
+  :type '(choice
+          (const :tag "Ignore ignored always" always)
+          (const :tag "Ignore ignored when others exist" t)
+          (const :tag "Don't ignore" nil)))
+
+(defvar ivy-use-ignore t
+  "Store policy for user-configured candidate filtering.
+This may be changed dynamically by `ivy-toggle-ignore'.
+Use `ivy-use-ignore-default' for a permanent configuration.")
+
+(defvar ivy--default nil
+  "Default initial input.")
+
+(defvar ivy--prompt nil
+  "Store the format-style prompt.
+When non-nil, it should contain at least one %d.")
+
+(defvar ivy--prompt-extra ""
+  "Temporary modifications to the prompt.")
+
+(defvar ivy--old-re nil
+  "Store the old regexp.")
+
+(defvar ivy--old-cands nil
+  "Store the candidates matched by `ivy--old-re'.")
+
+(defvar ivy--regex-function 'ivy--regex
+  "Current function for building a regex.")
+
+(defvar ivy--subexps 0
+  "Number of groups in the current `ivy--regex'.")
+
+(defvar ivy--full-length nil
+  "When :dynamic-collection is non-nil, this can be the total amount of candidates.")
+
+(defvar ivy--old-text ""
+  "Store old `ivy-text' for dynamic completion.")
+
+(defvar ivy-case-fold-search 'auto
+  "Store the current overriding `case-fold-search'.")
+
+(defvar Info-current-file)
+
+(eval-and-compile
+  (unless (fboundp 'defvar-local)
+    (defmacro defvar-local (var val &optional docstring)
+      "Define VAR as a buffer-local variable with default value VAL."
+      (declare (debug defvar) (doc-string 3))
+      (list 'progn (list 'defvar var val docstring)
+            (list 'make-variable-buffer-local (list 'quote var)))))
+  (unless (fboundp 'setq-local)
+    (defmacro setq-local (var val)
+      "Set variable VAR to value VAL in current buffer."
+      (list 'set (list 'make-local-variable (list 'quote var)) val))))
+
+(defmacro ivy-quit-and-run (&rest body)
+  "Quit the minibuffer and run BODY afterwards."
+  `(progn
+     (put 'quit 'error-message "")
+     (run-at-time nil nil
+                  (lambda ()
+                    (put 'quit 'error-message "Quit")
+                    ,@body))
+     (minibuffer-keyboard-quit)))
+
+(defun ivy-exit-with-action (action)
+  "Quit the minibuffer and call ACTION afterwards."
+  (ivy-set-action
+   `(lambda (x)
+      (funcall ',action x)
+      (ivy-set-action ',(ivy-state-action ivy-last))))
+  (setq ivy-exit 'done)
+  (exit-minibuffer))
+
+(defmacro with-ivy-window (&rest body)
+  "Execute BODY in the window from which `ivy-read' was called."
+  (declare (indent 0)
+           (debug t))
+  `(with-selected-window (ivy--get-window ivy-last)
+     ,@body))
+
+(defun ivy--done (text)
+  "Insert TEXT and exit minibuffer."
+  (if (and ivy--directory
+           (not (eq (ivy-state-history ivy-last) 'grep-files-history)))
+      (insert (setq ivy--current (expand-file-name
+                                  text ivy--directory)))
+    (insert (setq ivy--current text)))
+  (setq ivy-exit 'done)
+  (exit-minibuffer))
+
+;;* Commands
+(defun ivy-done ()
+  "Exit the minibuffer with the selected candidate."
+  (interactive)
+  (delete-minibuffer-contents)
+  (cond ((or (> ivy--length 0)
+             ;; the action from `ivy-dispatching-done' may not need a
+             ;; candidate at all
+             (eq this-command 'ivy-dispatching-done))
+         (ivy--done ivy--current))
+        ((memq (ivy-state-collection ivy-last)
+               '(read-file-name-internal internal-complete-buffer))
+         (if (or (not (eq confirm-nonexistent-file-or-buffer t))
+                 (equal " (confirm)" ivy--prompt-extra))
+             (ivy--done ivy-text)
+           (setq ivy--prompt-extra " (confirm)")
+           (insert ivy-text)
+           (ivy--exhibit)))
+        ((memq (ivy-state-require-match ivy-last)
+               '(nil confirm confirm-after-completion))
+         (ivy--done ivy-text))
+        (t
+         (setq ivy--prompt-extra " (match required)")
+         (insert ivy-text)
+         (ivy--exhibit))))
+
+(defvar ivy-read-action-format-function 'ivy-read-action-format-default
+  "Function used to transform the actions list into a docstring.")
+
+(defun ivy-read-action-format-default (actions)
+  "Create a docstring from ACTIONS.
+
+ACTIONS is a list. Each list item is a list of 3 items:
+key (a string), cmd and doc (a string)."
+  (format "%s\n%s\n"
+          (if (eq this-command 'ivy-read-action)
+              "Select action: "
+            ivy--current)
+          (mapconcat
+           (lambda (x)
+             (format "%s: %s"
+                     (propertize
+                      (car x)
+                      'face 'ivy-action)
+                     (nth 2 x)))
+           actions
+           "\n")))
+
+(defun ivy-read-action ()
+  "Change the action to one of the available ones.
+
+Return nil for `minibuffer-keyboard-quit' or wrong key during the
+selection, non-nil otherwise."
+  (interactive)
+  (let ((actions (ivy-state-action ivy-last)))
+    (if (null (ivy--actionp actions))
+        t
+      (let* ((hint (funcall ivy-read-action-format-function (cdr actions)))
+             (resize-mini-windows 'grow-only)
+             (key (string (read-key hint)))
+             (action-idx (cl-position-if
+                          (lambda (x) (equal (car x) key))
+                          (cdr actions))))
+        (cond ((string= key "")
+               nil)
+              ((null action-idx)
+               (message "%s is not bound" key)
+               nil)
+              (t
+               (message "")
+               (setcar actions (1+ action-idx))
+               (ivy-set-action actions)))))))
+
+(defun ivy-dispatching-done ()
+  "Select one of the available actions and call `ivy-done'."
+  (interactive)
+  (when (ivy-read-action)
+    (ivy-done)))
+
+(defun ivy-dispatching-call ()
+  "Select one of the available actions and call `ivy-call'."
+  (interactive)
+  (let ((actions (copy-sequence (ivy-state-action ivy-last))))
+    (unwind-protect
+         (when (ivy-read-action)
+           (ivy-call))
+      (ivy-set-action actions))))
+
+(defun ivy-build-tramp-name (x)
+  "Reconstruct X into a path.
+Is is a cons cell, related to `tramp-get-completion-function'."
+  (let ((user (car x))
+        (domain (cadr x)))
+    (if user
+        (concat user "@" domain)
+      domain)))
+
+(declare-function tramp-get-completion-function "tramp")
+(declare-function Info-find-node "info")
+
+(defun ivy-alt-done (&optional arg)
+  "Exit the minibuffer with the selected candidate.
+When ARG is t, exit with current text, ignoring the candidates."
+  (interactive "P")
+  (cond (arg
+         (ivy-immediate-done))
+        (ivy--directory
+         (ivy--directory-done))
+        ((eq (ivy-state-collection ivy-last) 'Info-read-node-name-1)
+         (if (member ivy--current '("(./)" "(../)"))
+             (ivy-quit-and-run
+              (ivy-read "Go to file: " 'read-file-name-internal
+                        :action (lambda (x)
+                                  (Info-find-node
+                                   (expand-file-name x ivy--directory)
+                                   "Top"))))
+           (ivy-done)))
+        (t
+         (ivy-done))))
+
+(defun ivy--directory-done ()
+  "Handle exit from the minibuffer when completing file names."
+  (let (dir)
+    (cond
+      ((equal ivy-text "/sudo::")
+       (setq dir (concat ivy-text ivy--directory))
+       (ivy--cd dir)
+       (ivy--exhibit))
+      ((and
+        (> ivy--length 0)
+        (not (string= ivy--current "./"))
+        (setq dir (ivy-expand-file-if-directory ivy--current)))
+       (ivy--cd dir)
+       (ivy--exhibit))
+      ((or (and (equal ivy--directory "/")
+                (string-match "\\`[^/]+:.*:.*\\'" ivy-text))
+           (string-match "\\`/[^/]+:.*:.*\\'" ivy-text))
+       (ivy-done))
+      ((or (and (equal ivy--directory "/")
+                (cond ((string-match
+                        "\\`\\([^/]+?\\):\\(?:\\(.*\\)@\\)?\\(.*\\)\\'"
+                        ivy-text))
+                      ((string-match
+                        "\\`\\([^/]+?\\):\\(?:\\(.*\\)@\\)?\\(.*\\)\\'"
+                        ivy--current)
+                       (setq ivy-text ivy--current))))
+           (string-match
+            "\\`/\\([^/]+?\\):\\(?:\\(.*\\)@\\)?\\(.*\\)\\'"
+            ivy-text))
+       (let ((method (match-string 1 ivy-text))
+             (user (match-string 2 ivy-text))
+             (rest (match-string 3 ivy-text))
+             res)
+         (require 'tramp)
+         (dolist (x (tramp-get-completion-function method))
+           (setq res (append res (funcall (car x) (cadr x)))))
+         (setq res (delq nil res))
+         (when user
+           (dolist (x res)
+             (setcar x user)))
+         (setq res (cl-delete-duplicates res :test #'equal))
+         (let* ((old-ivy-last ivy-last)
+                (enable-recursive-minibuffers t)
+                (host (ivy-read "user@host: "
+                                (mapcar #'ivy-build-tramp-name res)
+                                :initial-input rest)))
+           (setq ivy-last old-ivy-last)
+           (when host
+             (setq ivy--directory "/")
+             (ivy--cd (concat "/" method ":" host ":"))))))
+      (t
+       (ivy-done)))))
+
+(defun ivy-expand-file-if-directory (file-name)
+  "Expand FILE-NAME as directory.
+When this directory doesn't exist, return nil."
+  (when (stringp file-name)
+    (let ((full-name
+           ;; Ignore host name must not match method "ssh"
+           (ignore-errors
+             (file-name-as-directory
+              (expand-file-name file-name ivy--directory)))))
+      (when (and full-name (file-directory-p full-name))
+        full-name))))
+
+(defcustom ivy-tab-space nil
+  "When non-nil, `ivy-partial-or-done' should insert a space."
+  :type 'boolean)
+
+(defun ivy-partial-or-done ()
+  "Complete the minibuffer text as much as possible.
+If the text hasn't changed as a result, forward to `ivy-alt-done'."
+  (interactive)
+  (if (and (eq (ivy-state-collection ivy-last) #'read-file-name-internal)
+           (or (and (equal ivy--directory "/")
+                    (string-match "\\`[^/]+:.*\\'" ivy-text))
+               (string-match "\\`/" ivy-text)))
+      (let ((default-directory ivy--directory)
+            dir)
+        (minibuffer-complete)
+        (setq ivy-text (ivy--input))
+        (when (setq dir (ivy-expand-file-if-directory ivy-text))
+          (ivy--cd dir)))
+    (or (ivy-partial)
+        (when (or (eq this-command last-command)
+                  (eq ivy--length 1))
+          (ivy-alt-done)))))
+
+(defun ivy-partial ()
+  "Complete the minibuffer text as much as possible."
+  (interactive)
+  (let* ((parts (or (split-string ivy-text " " t) (list "")))
+         (postfix (car (last parts)))
+         (completion-ignore-case t)
+         (startp (string-match "^\\^" postfix))
+         (new (try-completion (if startp
+                                  (substring postfix 1)
+                                postfix)
+                              (mapcar (lambda (str)
+                                        (let ((i (string-match postfix str)))
+                                          (when i
+                                            (substring str i))))
+                                      ivy--old-cands))))
+    (cond ((eq new t) nil)
+          ((string= new ivy-text) nil)
+          (new
+           (delete-region (minibuffer-prompt-end) (point-max))
+           (setcar (last parts)
+                   (if startp
+                       (concat "^" new)
+                     new))
+           (insert (mapconcat #'identity parts " ")
+                   (if ivy-tab-space " " ""))
+           t))))
+
+(defun ivy-immediate-done ()
+  "Exit the minibuffer with the current input."
+  (interactive)
+  (delete-minibuffer-contents)
+  (insert (setq ivy--current
+                (if ivy--directory
+                    (expand-file-name ivy-text ivy--directory)
+                  ivy-text)))
+  (setq ivy-exit 'done)
+  (exit-minibuffer))
+
+;;;###autoload
+(defun ivy-resume ()
+  "Resume the last completion session."
+  (interactive)
+  (if (null (ivy-state-action ivy-last))
+      (user-error "The last session isn't compatible with `ivy-resume'")
+    (when (eq (ivy-state-caller ivy-last) 'swiper)
+      (switch-to-buffer (ivy-state-buffer ivy-last)))
+    (with-current-buffer (ivy-state-buffer ivy-last)
+      (ivy-read
+       (ivy-state-prompt ivy-last)
+       (ivy-state-collection ivy-last)
+       :predicate (ivy-state-predicate ivy-last)
+       :require-match (ivy-state-require-match ivy-last)
+       :initial-input ivy-text
+       :history (ivy-state-history ivy-last)
+       :preselect (unless (eq (ivy-state-collection ivy-last)
+                              'read-file-name-internal)
+                    ivy--current)
+       :keymap (ivy-state-keymap ivy-last)
+       :update-fn (ivy-state-update-fn ivy-last)
+       :sort (ivy-state-sort ivy-last)
+       :action (ivy-state-action ivy-last)
+       :unwind (ivy-state-unwind ivy-last)
+       :re-builder (ivy-state-re-builder ivy-last)
+       :matcher (ivy-state-matcher ivy-last)
+       :dynamic-collection (ivy-state-dynamic-collection ivy-last)
+       :caller (ivy-state-caller ivy-last)))))
+
+(defvar-local ivy-calling nil
+  "When non-nil, call the current action when `ivy--index' changes.")
+
+(defun ivy-set-index (index)
+  "Set `ivy--index' to INDEX."
+  (setq ivy--index index)
+  (when ivy-calling
+    (ivy--exhibit)
+    (ivy-call)))
+
+(defun ivy-beginning-of-buffer ()
+  "Select the first completion candidate."
+  (interactive)
+  (ivy-set-index 0))
+
+(defun ivy-end-of-buffer ()
+  "Select the last completion candidate."
+  (interactive)
+  (ivy-set-index (1- ivy--length)))
+
+(defun ivy-scroll-up-command ()
+  "Scroll the candidates upward by the minibuffer height."
+  (interactive)
+  (ivy-set-index (min (1- (+ ivy--index ivy-height))
+                      (1- ivy--length))))
+
+(defun ivy-scroll-down-command ()
+  "Scroll the candidates downward by the minibuffer height."
+  (interactive)
+  (ivy-set-index (max (1+ (- ivy--index ivy-height))
+                      0)))
+
+(defun ivy-minibuffer-grow ()
+  "Grow the minibuffer window by 1 line."
+  (interactive)
+  (setq-local max-mini-window-height
+              (cl-incf ivy-height)))
+
+(defun ivy-minibuffer-shrink ()
+  "Shrink the minibuffer window by 1 line."
+  (interactive)
+  (unless (<= ivy-height 2)
+    (setq-local max-mini-window-height
+                (cl-decf ivy-height))
+    (window-resize (selected-window) -1)))
+
+(defun ivy-next-line (&optional arg)
+  "Move cursor vertically down ARG candidates."
+  (interactive "p")
+  (setq arg (or arg 1))
+  (let ((index (+ ivy--index arg)))
+    (if (> index (1- ivy--length))
+        (if ivy-wrap
+            (ivy-beginning-of-buffer)
+          (ivy-set-index (1- ivy--length)))
+      (ivy-set-index index))))
+
+(defun ivy-next-line-or-history (&optional arg)
+  "Move cursor vertically down ARG candidates.
+If the input is empty, select the previous history element instead."
+  (interactive "p")
+  (if (string= ivy-text "")
+      (ivy-previous-history-element 1)
+    (ivy-next-line arg)))
+
+(defun ivy-previous-line (&optional arg)
+  "Move cursor vertically up ARG candidates."
+  (interactive "p")
+  (setq arg (or arg 1))
+  (let ((index (- ivy--index arg)))
+    (if (< index 0)
+        (if ivy-wrap
+            (ivy-end-of-buffer)
+          (ivy-set-index 0))
+      (ivy-set-index index))))
+
+(defun ivy-previous-line-or-history (arg)
+  "Move cursor vertically up ARG candidates.
+If the input is empty, select the previous history element instead."
+  (interactive "p")
+  (when (string= ivy-text "")
+    (ivy-previous-history-element 1))
+  (ivy-previous-line arg))
+
+(defun ivy-toggle-calling ()
+  "Flip `ivy-calling'."
+  (interactive)
+  (when (setq ivy-calling (not ivy-calling))
+    (ivy-call)))
+
+(defun ivy-toggle-ignore ()
+  "Toggle user-configured candidate filtering."
+  (interactive)
+  (setq ivy-use-ignore
+        (if ivy-use-ignore
+            nil
+          (or ivy-use-ignore-default t)))
+  ;; invalidate cache
+  (setq ivy--old-cands nil))
+
+(defun ivy--get-action (state)
+  "Get the action function from STATE."
+  (let ((action (ivy-state-action state)))
+    (when action
+      (if (functionp action)
+          action
+        (cadr (nth (car action) action))))))
+
+(defun ivy--get-window (state)
+  "Get the window from STATE."
+  (if (ivy-state-p state)
+      (let ((window (ivy-state-window state)))
+        (if (window-live-p window)
+            window
+          (if (= (length (window-list)) 1)
+              (selected-window)
+            (next-window))))
+    (selected-window)))
+
+(defun ivy--actionp (x)
+  "Return non-nil when X is a list of actions."
+  (and x (listp x) (not (eq (car x) 'closure))))
+
+(defun ivy-next-action ()
+  "When the current action is a list, scroll it forwards."
+  (interactive)
+  (let ((action (ivy-state-action ivy-last)))
+    (when (ivy--actionp action)
+      (unless (>= (car action) (1- (length action)))
+        (cl-incf (car action))))))
+
+(defun ivy-prev-action ()
+  "When the current action is a list, scroll it backwards."
+  (interactive)
+  (let ((action (ivy-state-action ivy-last)))
+    (when (ivy--actionp action)
+      (unless (<= (car action) 1)
+        (cl-decf (car action))))))
+
+(defun ivy-action-name ()
+  "Return the name associated with the current action."
+  (let ((action (ivy-state-action ivy-last)))
+    (if (ivy--actionp action)
+        (format "[%d/%d] %s"
+                (car action)
+                (1- (length action))
+                (nth 2 (nth (car action) action)))
+      "[1/1] default")))
+
+(defvar ivy-inhibit-action nil
+  "When non-nil, `ivy-call' does nothing.
+
+Example use:
+
+    (let* ((ivy-inhibit-action t)
+          (str (counsel-locate \"lispy.el\")))
+     ;; do whatever with str - the corresponding file will not be opened
+     )")
+
+(defun ivy-call ()
+  "Call the current action without exiting completion."
+  (interactive)
+  (unless ivy-inhibit-action
+    (let ((action (ivy--get-action ivy-last)))
+      (when action
+        (let* ((collection (ivy-state-collection ivy-last))
+               (x (cond ((and (consp collection)
+                              (consp (car collection))
+                              (cdr (assoc ivy--current collection))))
+                        ((equal ivy--current "")
+                         ivy-text)
+                        (t
+                         ivy--current))))
+          (prog1 (funcall action x)
+            (unless (or (eq ivy-exit 'done)
+                        (equal (selected-window)
+                               (active-minibuffer-window))
+                        (null (active-minibuffer-window)))
+              (select-window (active-minibuffer-window)))))))))
+
+(defun ivy-next-line-and-call (&optional arg)
+  "Move cursor vertically down ARG candidates.
+Call the permanent action if possible."
+  (interactive "p")
+  (ivy-next-line arg)
+  (ivy--exhibit)
+  (ivy-call))
+
+(defun ivy-previous-line-and-call (&optional arg)
+  "Move cursor vertically down ARG candidates.
+Call the permanent action if possible."
+  (interactive "p")
+  (ivy-previous-line arg)
+  (ivy--exhibit)
+  (ivy-call))
+
+(defun ivy-previous-history-element (arg)
+  "Forward to `previous-history-element' with ARG."
+  (interactive "p")
+  (previous-history-element arg)
+  (ivy--cd-maybe)
+  (move-end-of-line 1)
+  (ivy--maybe-scroll-history))
+
+(defun ivy-next-history-element (arg)
+  "Forward to `next-history-element' with ARG."
+  (interactive "p")
+  (if (and (= minibuffer-history-position 0)
+           (equal ivy-text ""))
+      (progn
+        (insert ivy--default)
+        (when (and (with-ivy-window (derived-mode-p 'prog-mode))
+                   (eq (ivy-state-caller ivy-last) 'swiper)
+                   (not (file-exists-p ivy--default))
+                   (not (ffap-url-p ivy--default))
+                   (not (ivy-state-dynamic-collection ivy-last))
+                   (> (point) (minibuffer-prompt-end)))
+          (undo-boundary)
+          (insert "\\_>")
+          (goto-char (minibuffer-prompt-end))
+          (insert "\\_<")
+          (forward-char (+ 2 (length ivy--default)))))
+    (next-history-element arg))
+  (ivy--cd-maybe)
+  (move-end-of-line 1)
+  (ivy--maybe-scroll-history))
+
+(defvar ivy-ffap-url-functions nil
+  "List of functions that check if the point is on a URL.")
+
+(defun ivy--cd-maybe ()
+  "Check if the current input points to a different directory.
+If so, move to that directory, while keeping only the file name."
+  (when ivy--directory
+    (let ((input (ivy--input))
+          url)
+      (if (setq url (or (ffap-url-p input)
+                        (with-ivy-window
+                          (cl-reduce
+                           (lambda (a b)
+                             (or a (funcall b)))
+                           ivy-ffap-url-functions
+                           :initial-value nil))))
+          (ivy-exit-with-action
+           (lambda (_)
+             (funcall ffap-url-fetcher url)))
+        (setq input (expand-file-name input))
+        (let ((file (file-name-nondirectory input))
+              (dir (expand-file-name (file-name-directory input))))
+          (if (string= dir ivy--directory)
+              (progn
+                (delete-minibuffer-contents)
+                (insert file))
+            (ivy--cd dir)
+            (insert file)))))))
+
+(defun ivy--maybe-scroll-history ()
+  "If the selected history element has an index, scroll there."
+  (let ((idx (ignore-errors
+               (get-text-property
+                (minibuffer-prompt-end)
+                'ivy-index))))
+    (when idx
+      (ivy--exhibit)
+      (setq ivy--index idx))))
+
+(defun ivy--cd (dir)
+  "When completing file names, move to directory DIR."
+  (if (null ivy--directory)
+      (error "Unexpected")
+    (setq ivy--old-cands nil)
+    (setq ivy--old-re nil)
+    (setq ivy--index 0)
+    (setq ivy--all-candidates
+          (ivy--sorted-files (setq ivy--directory dir)))
+    (setq ivy-text "")
+    (delete-minibuffer-contents)))
+
+(defun ivy-backward-delete-char ()
+  "Forward to `backward-delete-char'.
+On error (read-only), call `ivy-on-del-error-function'."
+  (interactive)
+  (if (and ivy--directory (= (minibuffer-prompt-end) (point)))
+      (progn
+        (ivy--cd (file-name-directory
+                  (directory-file-name
+                   (expand-file-name
+                    ivy--directory))))
+        (ivy--exhibit))
+    (condition-case nil
+        (backward-delete-char 1)
+      (error
+       (when ivy-on-del-error-function
+         (funcall ivy-on-del-error-function))))))
+
+(defun ivy-delete-char (arg)
+  "Forward to `delete-char' ARG."
+  (interactive "p")
+  (unless (= (point) (line-end-position))
+    (delete-char arg)))
+
+(defun ivy-forward-char (arg)
+  "Forward to `forward-char' ARG."
+  (interactive "p")
+  (unless (= (point) (line-end-position))
+    (forward-char arg)))
+
+(defun ivy-kill-word (arg)
+  "Forward to `kill-word' ARG."
+  (interactive "p")
+  (unless (= (point) (line-end-position))
+    (kill-word arg)))
+
+(defun ivy-kill-line ()
+  "Forward to `kill-line'."
+  (interactive)
+  (if (eolp)
+      (kill-region (minibuffer-prompt-end) (point))
+    (kill-line)))
+
+(defun ivy-backward-kill-word ()
+  "Forward to `backward-kill-word'."
+  (interactive)
+  (if (and ivy--directory (= (minibuffer-prompt-end) (point)))
+      (progn
+        (ivy--cd (file-name-directory
+                  (directory-file-name
+                   (expand-file-name
+                    ivy--directory))))
+        (ivy--exhibit))
+    (ignore-errors
+      (let ((pt (point)))
+        (forward-word -1)
+        (delete-region (point) pt)))))
+
+(defvar ivy--regexp-quote 'regexp-quote
+  "Store the regexp quoting state.")
+
+(defun ivy-toggle-regexp-quote ()
+  "Toggle the regexp quoting."
+  (interactive)
+  (setq ivy--old-re nil)
+  (cl-rotatef ivy--regex-function ivy--regexp-quote))
+
+(defvar avy-all-windows)
+(defvar avy-action)
+(defvar avy-keys)
+(defvar avy-keys-alist)
+(defvar avy-style)
+(defvar avy-styles-alist)
+(declare-function avy--process "ext:avy")
+(declare-function avy--style-fn "ext:avy")
+
+(eval-after-load 'avy
+  '(add-to-list 'avy-styles-alist '(ivy-avy . pre)))
+
+(defun ivy-avy ()
+  "Jump to one of the current ivy candidates."
+  (interactive)
+  (unless (require 'avy nil 'noerror)
+    (error "Package avy isn't installed"))
+  (let* ((avy-all-windows nil)
+         (avy-keys (or (cdr (assq 'ivy-avy avy-keys-alist))
+                       avy-keys))
+         (avy-style (or (cdr (assq 'ivy-avy
+                                   avy-styles-alist))
+                        avy-style))
+         (candidate
+          (let ((candidates))
+            (save-excursion
+              (save-restriction
+                (narrow-to-region
+                 (window-start)
+                 (window-end))
+                (goto-char (point-min))
+                (forward-line)
+                (while (< (point) (point-max))
+                  (push
+                   (cons (point)
+                         (selected-window))
+                   candidates)
+                  (forward-line))))
+            (setq avy-action #'identity)
+            (avy--process
+             (nreverse candidates)
+             (avy--style-fn avy-style)))))
+    (when (numberp candidate)
+      (ivy-set-index (- (line-number-at-pos candidate) 2))
+      (ivy--exhibit)
+      (ivy-done))))
+
+(defun ivy-sort-file-function-default (x y)
+  "Compare two files X and Y.
+Prioritize directories."
+  (if (get-text-property 0 'dirp x)
+      (if (get-text-property 0 'dirp y)
+          (string< x y)
+        t)
+    (if (get-text-property 0 'dirp y)
+        nil
+      (string< x y))))
+
+(defcustom ivy-sort-functions-alist
+  '((read-file-name-internal . ivy-sort-file-function-default)
+    (internal-complete-buffer . nil)
+    (counsel-git-grep-function . nil)
+    (Man-goto-section . nil)
+    (org-refile . nil)
+    (t . string-lessp))
+  "An alist of sorting functions for each collection function.
+Interactive functions that call completion fit in here as well.
+
+Nil means no sorting, which is useful to turn off the sorting for
+functions that have candidates in the natural buffer order, like
+`org-refile' or `Man-goto-section'.
+
+The entry associated with t is used for all fall-through cases.
+
+See also `ivy-sort-max-size'."
+  :type
+  '(alist
+    :key-type (choice
+               (const :tag "Fall-through" t)
+               (symbol :tag "Collection"))
+    :value-type (choice
+                 (const :tag "Plain sort" string-lessp)
+                 (const :tag "File sort" ivy-sort-file-function-default)
+                 (const :tag "No sort" nil)
+                 (function :tag "Custom function")))
+  :group 'ivy)
+
+(defvar ivy-index-functions-alist
+  '((swiper . ivy-recompute-index-swiper)
+    (swiper-multi . ivy-recompute-index-swiper)
+    (counsel-git-grep . ivy-recompute-index-swiper)
+    (counsel-grep . ivy-recompute-index-swiper-async)
+    (t . ivy-recompute-index-zero))
+  "An alist of index recomputing functions for each collection function.
+When the input changes, the appropriate function returns an
+integer - the index of the matched candidate that should be
+selected.")
+
+(defvar ivy-re-builders-alist
+  '((t . ivy--regex-plus))
+  "An alist of regex building functions for each collection function.
+
+Each key is (in order of priority):
+1. The actual collection function, e.g. `read-file-name-internal'.
+2. The symbol passed by :caller into `ivy-read'.
+3. `this-command'.
+4. t.
+
+Each value is a function that should take a string and return a
+valid regex or a regex sequence (see below).
+
+Possible choices: `ivy--regex', `regexp-quote',
+`ivy--regex-plus', `ivy--regex-fuzzy'.
+
+If a function returns a list, it should format like this:
+'((\"matching-regexp\" . t) (\"non-matching-regexp\") ...).
+
+The matches will be filtered in a sequence, you can mix the
+regexps that should match and that should not match as you
+like.")
+
+(defvar ivy-initial-inputs-alist
+  '((org-refile . "^")
+    (org-agenda-refile . "^")
+    (org-capture-refile . "^")
+    (counsel-M-x . "^")
+    (counsel-describe-function . "^")
+    (counsel-describe-variable . "^")
+    (man . "^")
+    (woman . "^"))
+  "Command to initial input table.")
+
+(defcustom ivy-sort-max-size 30000
+  "Sorting won't be done for collections larger than this."
+  :type 'integer)
+
+(defun ivy--sorted-files (dir)
+  "Return the list of files in DIR.
+Directories come first."
+  (let* ((default-directory dir)
+         (seq (all-completions "" 'read-file-name-internal))
+         sort-fn)
+    (if (equal dir "/")
+        seq
+      (setq seq (delete "./" (delete "../" seq)))
+      (when (eq (setq sort-fn (cdr (assoc 'read-file-name-internal
+                                          ivy-sort-functions-alist)))
+                #'ivy-sort-file-function-default)
+        (setq seq (mapcar (lambda (x)
+                            (propertize x 'dirp (string-match-p "/\\'" x)))
+                          seq)))
+      (when sort-fn
+        (setq seq (cl-sort seq sort-fn)))
+      (dolist (dir ivy-extra-directories)
+        (push dir seq))
+      seq)))
+
+(defvar ivy-recursive-restore t
+  "When non-nil, restore the above state when exiting the minibuffer.
+This variable is let-bound to nil by functions that take care of
+the restoring themselves.")
+
+;;** Entry Point
+(cl-defun ivy-read (prompt collection
+                    &key
+                      predicate require-match initial-input
+                      history preselect keymap update-fn sort
+                      action unwind re-builder matcher dynamic-collection caller)
+  "Read a string in the minibuffer, with completion.
+
+PROMPT is a format string, normally ending in a colon and a
+space; %d anywhere in the string is replaced by the current
+number of matching candidates. For the literal % character,
+escape it with %%. See also `ivy-count-format'.
+
+COLLECTION is either a list of strings, a function, an alist, or
+a hash table.
+
+If INITIAL-INPUT is not nil, then insert that input in the
+minibuffer initially.
+
+KEYMAP is composed with `ivy-minibuffer-map'.
+
+If PRESELECT is not nil, then select the corresponding candidate
+out of the ones that match the INITIAL-INPUT.
+
+UPDATE-FN is called each time the current candidate(s) is changed.
+
+When SORT is t, use `ivy-sort-functions-alist' for sorting.
+
+ACTION is a lambda function to call after selecting a result. It
+takes a single string argument.
+
+UNWIND is a lambda function to call before exiting.
+
+RE-BUILDER is a lambda function to call to transform text into a
+regex pattern.
+
+MATCHER is to override matching.
+
+DYNAMIC-COLLECTION is a boolean to specify if the list of
+candidates is updated after each input by calling COLLECTION.
+
+CALLER is a symbol to uniquely identify the caller to `ivy-read'.
+It is used, along with COLLECTION, to determine which
+customizations apply to the current completion session."
+  (let ((extra-actions (delete-dups
+                        (append (plist-get ivy--actions-list t)
+                                (plist-get ivy--actions-list this-command)
+                                (plist-get ivy--actions-list caller)))))
+    (when extra-actions
+      (setq action
+            (cond ((functionp action)
+                   `(1
+                     ("o" ,action "default")
+                     ,@extra-actions))
+                  ((null action)
+                   `(1
+                     ("o" identity "default")
+                     ,@extra-actions))
+                  (t
+                   (delete-dups (append action extra-actions)))))))
+  (let ((extra-sources (plist-get ivy--sources-list caller)))
+    (if extra-sources
+        (progn
+          (setq ivy--extra-candidates nil)
+          (dolist (source extra-sources)
+            (cond ((equal source '(original-source))
+                   (setq ivy--extra-candidates
+                         (cons source ivy--extra-candidates)))
+                  ((null (cdr source))
+                   (setq ivy--extra-candidates
+                         (cons
+                          (list (car source) (funcall (car source)))
+                          ivy--extra-candidates))))))
+      (setq ivy--extra-candidates '((original-source)))))
+  (let ((recursive-ivy-last (and (active-minibuffer-window) ivy-last))
+        (transformer-fn
+         (plist-get ivy--display-transformers-list
+                    (or caller (and (functionp collection)
+                                    collection)))))
+    (setq ivy-last
+          (make-ivy-state
+           :prompt prompt
+           :collection collection
+           :predicate predicate
+           :require-match require-match
+           :initial-input initial-input
+           :history history
+           :preselect preselect
+           :keymap keymap
+           :update-fn update-fn
+           :sort sort
+           :action action
+           :window (selected-window)
+           :buffer (current-buffer)
+           :unwind unwind
+           :re-builder re-builder
+           :matcher matcher
+           :dynamic-collection dynamic-collection
+           :display-transformer-fn transformer-fn
+           :caller caller))
+    (ivy--reset-state ivy-last)
+    (prog1
+        (unwind-protect
+             (minibuffer-with-setup-hook
+                 #'ivy--minibuffer-setup
+               (let* ((hist (or history 'ivy-history))
+                      (minibuffer-completion-table collection)
+                      (minibuffer-completion-predicate predicate)
+                      (resize-mini-windows (cond
+                                             ((display-graphic-p) nil)
+                                             ((null resize-mini-windows) 'grow-only)
+                                             (t resize-mini-windows))))
+                 (read-from-minibuffer
+                  prompt
+                  (ivy-state-initial-input ivy-last)
+                  (make-composed-keymap keymap ivy-minibuffer-map)
+                  nil
+                  hist)
+                 (when (eq ivy-exit 'done)
+                   (let ((item (if ivy--directory
+                                   ivy--current
+                                 ivy-text)))
+                     (unless (equal item "")
+                       (set hist (cons (propertize item 'ivy-index ivy--index)
+                                       (delete item
+                                               (cdr (symbol-value hist))))))))
+                 ivy--current))
+          (remove-hook 'post-command-hook #'ivy--exhibit)
+          (when (setq unwind (ivy-state-unwind ivy-last))
+            (funcall unwind))
+          (unless (eq ivy-exit 'done)
+            (when recursive-ivy-last
+              (ivy--reset-state (setq ivy-last recursive-ivy-last)))))
+      (ivy-call)
+      (when (and recursive-ivy-last
+                 ivy-recursive-restore)
+        (ivy--reset-state (setq ivy-last recursive-ivy-last))))))
+
+(defun ivy--reset-state (state)
+  "Reset the ivy to STATE.
+This is useful for recursive `ivy-read'."
+  (let ((prompt (or (ivy-state-prompt state) ""))
+        (collection (ivy-state-collection state))
+        (predicate (ivy-state-predicate state))
+        (history (ivy-state-history state))
+        (preselect (ivy-state-preselect state))
+        (sort (ivy-state-sort state))
+        (re-builder (ivy-state-re-builder state))
+        (dynamic-collection (ivy-state-dynamic-collection state))
+        (initial-input (ivy-state-initial-input state))
+        (require-match (ivy-state-require-match state))
+        (caller (ivy-state-caller state)))
+    (unless initial-input
+      (setq initial-input (cdr (assoc this-command
+                                      ivy-initial-inputs-alist))))
+    (setq ivy--directory nil)
+    (setq ivy-case-fold-search 'auto)
+    (setq ivy--regex-function
+          (or re-builder
+              (and (functionp collection)
+                   (cdr (assoc collection ivy-re-builders-alist)))
+              (and caller
+                   (cdr (assoc caller ivy-re-builders-alist)))
+              (cdr (assoc this-command ivy-re-builders-alist))
+              (cdr (assoc t ivy-re-builders-alist))
+              'ivy--regex))
+    (setq ivy--subexps 0)
+    (setq ivy--regexp-quote 'regexp-quote)
+    (setq ivy--old-text "")
+    (setq ivy--full-length nil)
+    (setq ivy-text "")
+    (setq ivy-calling nil)
+    (setq ivy-use-ignore ivy-use-ignore-default)
+    (let (coll sort-fn)
+      (cond ((eq collection 'Info-read-node-name-1)
+             (if (equal Info-current-file "dir")
+                 (setq coll
+                       (mapcar (lambda (x) (format "(%s)" x))
+                               (cl-delete-duplicates
+                                (all-completions "(" collection predicate)
+                                :test #'equal)))
+               (setq coll (all-completions "" collection predicate))))
+            ((eq collection 'read-file-name-internal)
+             (if (and initial-input (file-directory-p initial-input))
+                 (progn
+                   (setq ivy--directory initial-input)
+                   (setq initial-input nil))
+               (setq ivy--directory default-directory))
+             (require 'dired)
+             (when preselect
+               (let ((preselect-directory (file-name-directory preselect)))
+                 (unless (or (null preselect-directory)
+                             (string= preselect-directory
+                                      default-directory))
+                   (setq ivy--directory preselect-directory))
+                 (setf
+                  (ivy-state-preselect state)
+                  (setq preselect (file-name-nondirectory preselect)))))
+             (setq coll (ivy--sorted-files ivy--directory))
+             (when initial-input
+               (unless (or require-match
+                           (equal initial-input default-directory)
+                           (equal initial-input ""))
+                 (setq coll (cons initial-input coll)))
+               (unless (and (ivy-state-action ivy-last)
+                            (not (equal (ivy--get-action ivy-last) 'identity)))
+                 (setq initial-input nil))))
+            ((eq collection 'internal-complete-buffer)
+             (setq coll (ivy--buffer-list "" ivy-use-virtual-buffers predicate)))
+            (dynamic-collection
+             (setq coll (funcall collection ivy-text)))
+            ((or (functionp collection)
+                 (byte-code-function-p collection)
+                 (vectorp collection)
+                 (and (consp collection) (listp (car collection)))
+                 (hash-table-p collection)
+                 (and (listp collection) (symbolp (car collection))))
+             (setq coll (all-completions "" collection predicate)))
+            (t
+             (setq coll collection)))
+      (when sort
+        (if (and (functionp collection)
+                 (setq sort-fn (assoc collection ivy-sort-functions-alist)))
+            (when (and (setq sort-fn (cdr sort-fn))
+                       (not (eq collection 'read-file-name-internal)))
+              (setq coll (cl-sort coll sort-fn)))
+          (unless (eq history 'org-refile-history)
+            (if (and (setq sort-fn (cdr (assoc t ivy-sort-functions-alist)))
+                     (<= (length coll) ivy-sort-max-size))
+                (setq coll (cl-sort (copy-sequence coll) sort-fn))))))
+      (setq coll (ivy--set-candidates coll))
+      (when preselect
+        (unless (or (and require-match
+                         (not (eq collection 'internal-complete-buffer)))
+                    dynamic-collection
+                    (let ((re (regexp-quote preselect)))
+                      (cl-find-if (lambda (x) (string-match re x))
+                                  coll)))
+          (setq coll (cons preselect coll))))
+      (setq ivy--old-re nil)
+      (setq ivy--old-cands nil)
+      (when (integerp preselect)
+        (setq ivy--old-re "")
+        (setq ivy--index preselect))
+      (when initial-input
+        ;; Needed for anchor to work
+        (setq ivy--old-cands coll)
+        (setq ivy--old-cands (ivy--filter initial-input coll)))
+      (setq ivy--all-candidates coll)
+      (unless (integerp preselect)
+        (setq ivy--index (or
+                          (and dynamic-collection
+                               ivy--index)
+                          (and preselect
+                               (ivy--preselect-index
+                                preselect
+                                (if initial-input
+                                    ivy--old-cands
+                                  coll)))
+                          0))))
+    (setq ivy-exit nil)
+    (setq ivy--default
+          (if (region-active-p)
+              (buffer-substring
+               (region-beginning)
+               (region-end))
+            (ivy-thing-at-point)))
+    (setq ivy--prompt
+          (cond ((string-match "%.*d" prompt)
+                 prompt)
+                ((null ivy-count-format)
+                 (error
+                  "`ivy-count-format' can't be nil.  Set it to an empty string instead"))
+                ((string-match "%d.*%d" ivy-count-format)
+                 (let ((w (length (number-to-string
+                                   (length ivy--all-candidates))))
+                       (s (copy-sequence ivy-count-format)))
+                   (string-match "%d" s)
+                   (match-end 0)
+                   (string-match "%d" s (match-end 0))
+                   (setq s (replace-match (format "%%-%dd" w) nil nil s))
+                   (string-match "%d" s)
+                   (concat (replace-match (format "%%%dd" w) nil nil s)
+                           prompt)))
+                ((string-match "%.*d" ivy-count-format)
+                 (concat ivy-count-format prompt))
+                (ivy--directory
+                 prompt)
+                (t
+                 prompt)))
+    (setf (ivy-state-initial-input ivy-last) initial-input)))
+
+;;;###autoload
+(defun ivy-completing-read (prompt collection
+                            &optional predicate require-match initial-input
+                              history def inherit-input-method)
+  "Read a string in the minibuffer, with completion.
+
+This interface conforms to `completing-read' and can be used for
+`completing-read-function'.
+
+PROMPT is a string that normally ends in a colon and a space.
+COLLECTION is either a list of strings, an alist, an obarray, or a hash table.
+PREDICATE limits completion to a subset of COLLECTION.
+REQUIRE-MATCH is a boolean value.  See `completing-read'.
+INITIAL-INPUT is a string inserted into the minibuffer initially.
+HISTORY is a list of previously selected inputs.
+DEF is the default value.
+INHERIT-INPUT-METHOD is currently ignored."
+  (if (memq this-command '(tmm-menubar tmm-shortcut))
+      (completing-read-default prompt collection
+                               predicate require-match
+                               initial-input history
+                               def inherit-input-method)
+    ;; See the doc of `completing-read'.
+    (when (consp history)
+      (when (numberp (cdr history))
+        (setq initial-input (nth (1- (cdr history))
+                                 (symbol-value (car history)))))
+      (setq history (car history)))
+    (ivy-read (replace-regexp-in-string "%" "%%" prompt)
+              collection
+              :predicate predicate
+              :require-match require-match
+              :initial-input (if (consp initial-input)
+                                 (car initial-input)
+                               (if (and (stringp initial-input)
+                                        (string-match "\\+" initial-input))
+                                   (replace-regexp-in-string
+                                    "\\+" "\\\\+" initial-input)
+                                 initial-input))
+              :preselect (if (listp def) (car def) def)
+              :history history
+              :keymap nil
+              :sort
+              (let ((sort (or (assoc this-command ivy-sort-functions-alist)
+                              (assoc t ivy-sort-functions-alist))))
+                (if sort
+                    (cdr sort)
+                  t)))))
+
+(defvar ivy-completion-beg nil
+  "Completion bounds start.")
+
+(defvar ivy-completion-end nil
+  "Completion bounds end.")
+
+(defun ivy-completion-in-region-action (str)
+  "Insert STR, erasing the previous one.
+The previous string is between `ivy-completion-beg' and `ivy-completion-end'."
+  (when (stringp str)
+    (with-ivy-window
+      (when ivy-completion-beg
+        (delete-region
+         ivy-completion-beg
+         ivy-completion-end))
+      (setq ivy-completion-beg
+            (move-marker (make-marker) (point)))
+      (insert str)
+      (setq ivy-completion-end
+            (move-marker (make-marker) (point))))))
+
+(defun ivy-completion-common-length (str)
+  "Return the length of the first 'completions-common-part face in STR."
+  (let ((pos 0)
+        (len (length str)))
+    (while (and (<= pos len)
+                (let ((prop (get-text-property pos 'face str)))
+                  (not (eq 'completions-common-part
+                           (if (listp prop) (car prop) prop)))))
+      (setq pos (1+ pos)))
+    (if (< pos len)
+        (or (next-single-property-change pos 'face str) len)
+      0)))
+
+(defun ivy-completion-in-region (start end collection &optional predicate)
+  "An Ivy function suitable for `completion-in-region-function'."
+  (let* ((enable-recursive-minibuffers t)
+         (str (buffer-substring-no-properties start end))
+         (completion-ignore-case case-fold-search)
+         (comps
+          (completion-all-completions str collection predicate (- end start))))
+    (if (null comps)
+        (message "No matches")
+      (nconc comps nil)
+      (setq ivy-completion-beg (- end (ivy-completion-common-length (car comps))))
+      (setq ivy-completion-end end)
+      (if (null (cdr comps))
+          (if (string= str (car comps))
+              (message "Sole match")
+            (setf (ivy-state-window ivy-last) (selected-window))
+            (ivy-completion-in-region-action
+             (substring-no-properties
+              (car comps))))
+        (let* ((w (1+ (floor (log (length comps) 10))))
+               (ivy-count-format (if (string= ivy-count-format "")
+                                     ivy-count-format
+                                   (format "%%-%dd " w)))
+               (prompt (format "(%s): " str)))
+          (and
+           (ivy-read (if (string= ivy-count-format "")
+                         prompt
+                       (replace-regexp-in-string "%" "%%" prompt))
+                     ;; remove 'completions-first-difference face
+                     (mapcar #'substring-no-properties comps)
+                     :predicate predicate
+                     :action #'ivy-completion-in-region-action
+                     :require-match t)
+           t))))))
+
+(defcustom ivy-do-completion-in-region t
+  "When non-nil `ivy-mode' will set `completion-in-region-function'."
+  :type 'boolean)
+
+;;;###autoload
+(define-minor-mode ivy-mode
+  "Toggle Ivy mode on or off.
+Turn Ivy mode on if ARG is positive, off otherwise.
+Turning on Ivy mode sets `completing-read-function' to
+`ivy-completing-read'.
+
+Global bindings:
+\\{ivy-mode-map}
+
+Minibuffer bindings:
+\\{ivy-minibuffer-map}"
+  :group 'ivy
+  :global t
+  :keymap ivy-mode-map
+  :lighter " ivy"
+  (if ivy-mode
+      (progn
+        (setq completing-read-function 'ivy-completing-read)
+        (when ivy-do-completion-in-region
+          (setq completion-in-region-function 'ivy-completion-in-region)))
+    (setq completing-read-function 'completing-read-default)
+    (setq completion-in-region-function 'completion--in-region)))
+
+(defun ivy--preselect-index (preselect candidates)
+  "Return the index of PRESELECT in CANDIDATES."
+  (cond ((integerp preselect)
+         preselect)
+        ((cl-position preselect candidates :test #'equal))
+        ((stringp preselect)
+         (let ((re preselect))
+           (cl-position-if
+            (lambda (x)
+              (string-match re x))
+            candidates)))))
+
+;;* Implementation
+;;** Regex
+(defvar ivy--regex-hash
+  (make-hash-table :test #'equal)
+  "Store pre-computed regex.")
+
+(defun ivy--split (str)
+  "Split STR into a list by single spaces.
+The remaining spaces stick to their left.
+This allows to \"quote\" N spaces by inputting N+1 spaces."
+  (let ((len (length str))
+        start0
+        (start1 0)
+        res s
+        match-len)
+    (while (and (string-match " +" str start1)
+                (< start1 len))
+      (if (and (> (match-beginning 0) 2)
+               (string= "[^" (substring
+                              str
+                              (- (match-beginning 0) 2)
+                              (match-beginning 0))))
+          (progn
+            (setq start1 (match-end 0))
+            (setq start0 0))
+        (setq match-len (- (match-end 0) (match-beginning 0)))
+        (if (= match-len 1)
+            (progn
+              (when start0
+                (setq start1 start0)
+                (setq start0 nil))
+              (push (substring str start1 (match-beginning 0)) res)
+              (setq start1 (match-end 0)))
+          (setq str (replace-match
+                     (make-string (1- match-len) ?\ )
+                     nil nil str))
+          (setq start0 (or start0 start1))
+          (setq start1 (1- (match-end 0))))))
+    (if start0
+        (push (substring str start0) res)
+      (setq s (substring str start1))
+      (unless (= (length s) 0)
+        (push s res)))
+    (nreverse res)))
+
+(defun ivy--regex (str &optional greedy)
+  "Re-build regex pattern from STR in case it has a space.
+When GREEDY is non-nil, join words in a greedy way."
+  (let ((hashed (unless greedy
+                  (gethash str ivy--regex-hash))))
+    (if hashed
+        (prog1 (cdr hashed)
+          (setq ivy--subexps (car hashed)))
+      (when (string-match "\\([^\\]\\|^\\)\\\\$" str)
+        (setq str (substring str 0 -1)))
+      (cdr (puthash str
+                    (let ((subs (ivy--split str)))
+                      (if (= (length subs) 1)
+                          (cons
+                           (setq ivy--subexps 0)
+                           (car subs))
+                        (cons
+                         (setq ivy--subexps (length subs))
+                         (mapconcat
+                          (lambda (x)
+                            (if (string-match "\\`\\\\([^?].*\\\\)\\'" x)
+                                x
+                              (format "\\(%s\\)" x)))
+                          subs
+                          (if greedy
+                              ".*"
+                            ".*?")))))
+                    ivy--regex-hash)))))
+
+(defun ivy--regex-ignore-order--part (str &optional discard)
+  "Re-build regex from STR by splitting at spaces.
+Ignore the order of each group."
+  (let* ((subs (split-string str " +" t))
+         (len (length subs)))
+    (cl-case len
+      (0
+       "")
+      (t
+       (mapcar (lambda (x) (cons x (not discard)))
+               subs)))))
+
+(defun ivy--regex-ignore-order (str)
+  "Re-build regex from STR by splitting at spaces.
+Ignore the order of each group. Everything before \"!\" should
+match. Everything after \"!\" should not match."
+  (let ((parts (split-string str "!" t)))
+    (cl-case (length parts)
+      (0
+       "")
+      (1
+       (if (string= (substring str 0 1) "!")
+           (list (cons "" t)
+                 (ivy--regex-ignore-order--part (car parts) t))
+         (ivy--regex-ignore-order--part (car parts))))
+      (2
+       (append
+        (ivy--regex-ignore-order--part (car parts))
+        (ivy--regex-ignore-order--part (cadr parts) t)))
+      (t (error "Unexpected: use only one !")))))
+
+(defun ivy--regex-plus (str)
+  "Build a regex sequence from STR.
+Spaces are wild card characters, everything before \"!\" should
+match. Everything after \"!\" should not match."
+  (let ((parts (split-string str "!" t)))
+    (cl-case (length parts)
+      (0
+       "")
+      (1
+       (if (string= (substring str 0 1) "!")
+           (list (cons "" t)
+                 (list (ivy--regex (car parts))))
+         (ivy--regex (car parts))))
+      (2
+       (cons
+        (cons (ivy--regex (car parts)) t)
+        (mapcar #'list (split-string (cadr parts) " " t))))
+      (t (error "Unexpected: use only one !")))))
+
+(defun ivy--regex-fuzzy (str)
+  "Build a regex sequence from STR.
+Insert .* between each char."
+  (if (string-match "\\`\\(\\^?\\)\\(.*?\\)\\(\\$?\\)\\'" str)
+      (prog1
+          (concat (match-string 1 str)
+                  (mapconcat
+                   (lambda (x)
+                     (format "\\(%c\\)" x))
+                   (string-to-list (match-string 2 str)) ".*")
+                  (match-string 3 str))
+        (setq ivy--subexps (length (match-string 2 str))))
+    str))
+
+(defcustom ivy-fixed-height-minibuffer nil
+  "When non nil, fix the height of the minibuffer during ivy
+completion at `ivy-height'. This effectively sets the minimum
+height at this level and tries to ensure that it does not change
+depending on the number of candidates."
+  :group 'ivy
+  :type 'boolean)
+
+;;** Rest
+(defun ivy--minibuffer-setup ()
+  "Setup ivy completion in the minibuffer."
+  (set (make-local-variable 'completion-show-inline-help) nil)
+  (set (make-local-variable 'minibuffer-default-add-function)
+       (lambda ()
+         (list ivy--default)))
+  (set (make-local-variable 'inhibit-field-text-motion) nil)
+  (when (display-graphic-p)
+    (setq truncate-lines t))
+  (setq-local max-mini-window-height ivy-height)
+  (when ivy-fixed-height-minibuffer
+    (set-window-text-height (selected-window) ivy-height))
+  (add-hook 'post-command-hook #'ivy--exhibit nil t)
+  ;; show completions with empty input
+  (ivy--exhibit))
+
+(defun ivy--input ()
+  "Return the current minibuffer input."
+  ;; assume one-line minibuffer input
+  (buffer-substring-no-properties
+   (minibuffer-prompt-end)
+   (line-end-position)))
+
+(defun ivy--cleanup ()
+  "Delete the displayed completion candidates."
+  (save-excursion
+    (goto-char (minibuffer-prompt-end))
+    (delete-region (line-end-position) (point-max))))
+
+(defun ivy--insert-prompt ()
+  "Update the prompt according to `ivy--prompt'."
+  (when ivy--prompt
+    (unless (memq this-command '(ivy-done ivy-alt-done ivy-partial-or-done
+                                 counsel-find-symbol))
+      (setq ivy--prompt-extra ""))
+    (let (head tail)
+      (if (string-match "\\(.*\\): \\'" ivy--prompt)
+          (progn
+            (setq head (match-string 1 ivy--prompt))
+            (setq tail ": "))
+        (setq head (substring ivy--prompt 0 -1))
+        (setq tail " "))
+      (let ((inhibit-read-only t)
+            (std-props '(front-sticky t rear-nonsticky t field t read-only t))
+            (n-str
+             (concat
+              (if (and (bound-and-true-p minibuffer-depth-indicate-mode)
+                       (> (minibuffer-depth) 1))
+                  (format "[%d] " (minibuffer-depth))
+                "")
+              (concat
+               (if (string-match "%d.*%d" ivy-count-format)
+                   (format head
+                           (1+ ivy--index)
+                           (or (and (ivy-state-dynamic-collection ivy-last)
+                                    ivy--full-length)
+                               ivy--length))
+                 (format head
+                         (or (and (ivy-state-dynamic-collection ivy-last)
+                                  ivy--full-length)
+                             ivy--length)))
+               ivy--prompt-extra
+               tail)))
+            (d-str (if ivy--directory
+                       (abbreviate-file-name ivy--directory)
+                     "")))
+        (save-excursion
+          (goto-char (point-min))
+          (delete-region (point-min) (minibuffer-prompt-end))
+          (if (> (+ (mod (+ (length n-str) (length d-str)) (window-width))
+                    (length ivy-text))
+                 (window-width))
+              (setq n-str (concat n-str "\n" d-str))
+            (setq n-str (concat n-str d-str)))
+          (when ivy-add-newline-after-prompt
+            (setq n-str (concat n-str "\n")))
+          (let ((regex (format "\\([^\n]\\{%d\\}\\)[^\n]" (window-width))))
+            (while (string-match regex n-str)
+              (setq n-str (replace-match (concat (match-string 1 n-str) "\n") nil t n-str 1))))
+          (set-text-properties 0 (length n-str)
+                               `(face minibuffer-prompt ,@std-props)
+                               n-str)
+          (ivy--set-match-props n-str "confirm"
+                                `(face ivy-confirm-face ,@std-props))
+          (ivy--set-match-props n-str "match required"
+                                `(face ivy-match-required-face ,@std-props))
+          (insert n-str))
+        ;; get out of the prompt area
+        (constrain-to-field nil (point-max))))))
+
+(defun ivy--set-match-props (str match props)
+  "Set STR text properties that match MATCH to PROPS."
+  (when (string-match match str)
+    (set-text-properties
+     (match-beginning 0)
+     (match-end 0)
+     props
+     str)))
+
+(defvar inhibit-message)
+
+(defun ivy--sort-maybe (collection)
+  "Sort COLLECTION if needed."
+  (let ((sort (ivy-state-sort ivy-last))
+        entry)
+    (if (null sort)
+        collection
+      (let ((sort-fn (cond ((functionp sort)
+                            sort)
+                           ((setq entry (assoc (ivy-state-collection ivy-last)
+                                               ivy-sort-functions-alist))
+                            (cdr entry))
+                           (t
+                            (cdr (assoc t ivy-sort-functions-alist))))))
+        (if (functionp sort-fn)
+            (cl-sort (copy-sequence collection) sort-fn)
+          collection)))))
+
+(defun ivy--magic-file-slash ()
+  (cond ((member ivy-text ivy--all-candidates)
+         (ivy--cd (expand-file-name ivy-text ivy--directory)))
+        ((string-match "//\\'" ivy-text)
+         (if (and default-directory
+                  (string-match "\\`[[:alpha:]]:/" default-directory))
+             (ivy--cd (match-string 0 default-directory))
+           (ivy--cd "/")))
+        ((string-match "[[:alpha:]]:/\\'" ivy-text)
+         (let ((drive-root (match-string 0 ivy-text)))
+           (when (file-exists-p drive-root)
+             (ivy--cd drive-root))))
+        ((and (or (> ivy--index 0)
+                  (= ivy--length 1)
+                  (not (string= ivy-text "/")))
+              (let ((default-directory ivy--directory))
+                (and
+                 (not (equal ivy--current ""))
+                 (file-directory-p ivy--current)
+                 (file-exists-p ivy--current))))
+         (ivy--cd (expand-file-name ivy--current ivy--directory)))))
+
+(defun ivy--exhibit ()
+  "Insert Ivy completions display.
+Should be run via minibuffer `post-command-hook'."
+  (when (memq 'ivy--exhibit post-command-hook)
+    (let ((inhibit-field-text-motion nil))
+      (constrain-to-field nil (point-max)))
+    (setq ivy-text (ivy--input))
+    (if (ivy-state-dynamic-collection ivy-last)
+        ;; while-no-input would cause annoying
+        ;; "Waiting for process to die...done" message interruptions
+        (let ((inhibit-message t))
+          (unless (equal ivy--old-text ivy-text)
+            (while-no-input
+              (setq ivy--all-candidates
+                    (ivy--sort-maybe
+                     (funcall (ivy-state-collection ivy-last) ivy-text)))
+              (setq ivy--old-text ivy-text)))
+          (when ivy--all-candidates
+            (ivy--insert-minibuffer
+             (ivy--format ivy--all-candidates))))
+      (cond (ivy--directory
+             (if (string-match "/\\'" ivy-text)
+                 (ivy--magic-file-slash)
+               (if (string-match "\\`~\\'" ivy-text)
+                   (ivy--cd (expand-file-name "~/")))))
+            ((eq (ivy-state-collection ivy-last) 'internal-complete-buffer)
+             (when (or (and (string-match "\\` " ivy-text)
+                            (not (string-match "\\` " ivy--old-text)))
+                       (and (string-match "\\` " ivy--old-text)
+                            (not (string-match "\\` " ivy-text))))
+               (setq ivy--all-candidates
+                     (if (and (> (length ivy-text) 0)
+                              (eq (aref ivy-text 0)
+                                  ?\ ))
+                         (ivy--buffer-list " ")
+                       (ivy--buffer-list "" ivy-use-virtual-buffers)))
+               (setq ivy--old-re nil))))
+      (ivy--insert-minibuffer
+       (with-current-buffer (ivy-state-buffer ivy-last)
+         (ivy--format
+          (ivy--filter ivy-text ivy--all-candidates))))
+      (setq ivy--old-text ivy-text))))
+
+(defun ivy--insert-minibuffer (text)
+  "Insert TEXT into minibuffer with appropriate cleanup."
+  (let ((resize-mini-windows nil)
+        (update-fn (ivy-state-update-fn ivy-last))
+        deactivate-mark)
+    (ivy--cleanup)
+    (when update-fn
+      (funcall update-fn))
+    (ivy--insert-prompt)
+    ;; Do nothing if while-no-input was aborted.
+    (when (stringp text)
+      (let ((buffer-undo-list t))
+        (save-excursion
+          (forward-line 1)
+          (insert text))))
+    (when (display-graphic-p)
+      (ivy--resize-minibuffer-to-fit))))
+
+(defun ivy--resize-minibuffer-to-fit ()
+  "Resize the minibuffer window size to fit the text in the minibuffer."
+  (unless (frame-root-window-p (minibuffer-window))
+    (with-selected-window (minibuffer-window)
+      (if (fboundp 'window-text-pixel-size)
+          (let ((text-height (cdr (window-text-pixel-size)))
+                (body-height (window-body-height nil t)))
+            (when (> text-height body-height)
+              ;; Note: the size increment needs to be at least frame-char-height,
+              ;; otherwise resizing won't do anything.
+              (let ((delta (max (- text-height body-height) (frame-char-height))))
+                (window-resize nil delta nil t t))))
+        (let ((text-height (count-screen-lines))
+              (body-height (window-body-height)))
+          (when (> text-height body-height)
+            (window-resize nil (- text-height body-height) nil t)))))))
+
+(declare-function colir-blend-face-background "ext:colir")
+
+(defun ivy--add-face (str face)
+  "Propertize STR with FACE.
+`font-lock-append-text-property' is used, since it's better than
+`propertize' or `add-face-text-property' in this case."
+  (require 'colir)
+  (condition-case nil
+      (progn
+        (colir-blend-face-background 0 (length str) face str)
+        (let ((foreground (face-foreground face)))
+          (when foreground
+            (add-face-text-property
+             0 (length str)
+             `(:foreground ,foreground)
+             nil
+             str))))
+    (error
+     (ignore-errors
+       (font-lock-append-text-property 0 (length str) 'face face str))))
+  str)
+
+(declare-function flx-make-string-cache "ext:flx")
+(declare-function flx-score "ext:flx")
+
+(defvar ivy--flx-cache nil)
+
+(eval-after-load 'flx
+  '(setq ivy--flx-cache (flx-make-string-cache)))
+
+(defun ivy-toggle-case-fold ()
+  "Toggle the case folding between nil and auto.
+In any completion session, the case folding starts in auto:
+
+- when the input is all lower case, `case-fold-search' is t
+- otherwise nil.
+
+You can toggle this to make `case-fold-search' nil regardless of input."
+  (interactive)
+  (setq ivy-case-fold-search
+        (if ivy-case-fold-search
+            nil
+          'auto))
+  ;; reset cache so that the candidate list updates
+  (setq ivy--old-re nil))
+
+(defun ivy--re-filter (re candidates)
+  "Return all RE matching CANDIDATES.
+RE is a list of cons cells, with a regexp car and a boolean cdr.
+When the cdr is t, the car must match.
+Otherwise, the car must not match."
+  (let ((re-list (if (stringp re) (list (cons re t)) re))
+        (res candidates))
+    (dolist (re re-list)
+      (setq res
+            (ignore-errors
+              (funcall
+               (if (cdr re)
+                   #'cl-remove-if-not
+                 #'cl-remove-if)
+               (let ((re-str (car re)))
+                 (lambda (x) (string-match re-str x)))
+               res))))
+    res))
+
+(defun ivy--filter (name candidates)
+  "Return all items that match NAME in CANDIDATES.
+CANDIDATES are assumed to be static."
+  (let ((re (funcall ivy--regex-function name)))
+    (if (and (equal re ivy--old-re)
+             ivy--old-cands)
+        ;; quick caching for "C-n", "C-p" etc.
+        ivy--old-cands
+      (let* ((re-str (if (listp re) (caar re) re))
+             (matcher (ivy-state-matcher ivy-last))
+             (case-fold-search
+              (and ivy-case-fold-search
+                   (string= name (downcase name))))
+             (cands (cond
+                      (matcher
+                       (funcall matcher re candidates))
+                      ((and ivy--old-re
+                            (stringp re)
+                            (stringp ivy--old-re)
+                            (not (string-match "\\\\" ivy--old-re))
+                            (not (equal ivy--old-re ""))
+                            (memq (cl-search
+                                   (if (string-match "\\\\)\\'" ivy--old-re)
+                                       (substring ivy--old-re 0 -2)
+                                     ivy--old-re)
+                                   re)
+                                  '(0 2)))
+                       (ignore-errors
+                         (cl-remove-if-not
+                          (lambda (x) (string-match re x))
+                          ivy--old-cands)))
+                      (t
+                       (ivy--re-filter re candidates)))))
+        (ivy--recompute-index name re-str cands)
+        (setq ivy--old-re
+              (if (eq ivy--regex-function 'ivy--regex-ignore-order)
+                  re
+                (if cands
+                    re-str
+                  "")))
+        (setq ivy--old-cands (ivy--sort name cands))))))
+
+(defun ivy--set-candidates (x)
+  "Update `ivy--all-candidates' with X."
+  (let (res)
+    (dolist (source ivy--extra-candidates)
+      (if (equal source '(original-source))
+          (if (null res)
+              (setq res x)
+            (setq res (append x res)))
+        (setq ivy--old-re nil)
+        (setq res (append
+                   (ivy--filter ivy-text (cadr source))
+                   res))))
+    (setq ivy--all-candidates res)))
+
+(defcustom ivy-sort-matches-functions-alist '((t . nil))
+  "An alist of functions for sorting matching candidates.
+
+Unlike `ivy-sort-functions-alist', which is used to sort the
+whole collection only once, this alist of functions are used to
+sort only matching candidates after each change in input.
+
+The alist KEY is either a collection function or t to match
+previously unmatched collection functions.
+
+The alist VAL is a sorting function with the signature of
+`ivy--prefix-sort'."
+  :type '(alist
+          :key-type (choice
+                     (const :tag "Fall-through" t)
+                     (symbol :tag "Collection"))
+          :value-type
+          (choice
+           (const :tag "Don't sort" nil)
+           (const :tag "Put prefix matches ahead" 'ivy--prefix-sort)
+           (function :tag "Custom sort function"))))
+
+(defun ivy--sort-files-by-date (_name candidates)
+  "Re-soft CANDIDATES according to file modification date."
+  (let ((default-directory ivy--directory))
+    (cl-sort (copy-sequence candidates)
+             (lambda (f1 f2)
+               (time-less-p
+                (nth 5 (file-attributes f2))
+                (nth 5 (file-attributes f1)))))))
+
+(defun ivy--sort (name candidates)
+  "Re-sort CANDIDATES by NAME.
+All CANDIDATES are assumed to match NAME."
+  (let ((key (or (ivy-state-caller ivy-last)
+                 (when (functionp (ivy-state-collection ivy-last))
+                   (ivy-state-collection ivy-last))))
+        fun)
+    (cond ((and (require 'flx nil 'noerror)
+                (eq ivy--regex-function 'ivy--regex-fuzzy))
+           (ivy--flx-sort name candidates))
+          ((setq fun (cdr (or (assoc key ivy-sort-matches-functions-alist)
+                              (assoc t ivy-sort-matches-functions-alist))))
+           (funcall fun name candidates))
+          (t
+           candidates))))
+
+(defun ivy--prefix-sort (name candidates)
+  "Re-sort CANDIDATES.
+Prefix matches to NAME are put ahead of the list."
+  (if (or (string-match "^\\^" name) (string= name ""))
+      candidates
+    (let ((re-prefix (concat "^" (funcall ivy--regex-function name)))
+          res-prefix
+          res-noprefix)
+      (dolist (s candidates)
+        (if (string-match re-prefix s)
+            (push s res-prefix)
+          (push s res-noprefix)))
+      (nconc
+       (nreverse res-prefix)
+       (nreverse res-noprefix)))))
+
+(defun ivy--recompute-index (name re-str cands)
+  (let* ((caller (ivy-state-caller ivy-last))
+         (func (or (and caller (cdr (assoc caller ivy-index-functions-alist)))
+                   (cdr (assoc t ivy-index-functions-alist))
+                   #'ivy-recompute-index-zero)))
+    (unless (eq this-command 'ivy-resume)
+      (setq ivy--index
+            (or
+             (cl-position (if (and (> (length name) 0)
+                                   (eq ?^ (aref name 0)))
+                              (substring name 1)
+                            name) cands
+                            :test #'equal)
+             (and ivy--directory
+                  (cl-position
+                   (concat re-str "/") cands
+                   :test #'equal))
+             (and (not (string= name ""))
+                  (not (and (require 'flx nil 'noerror)
+                            (eq ivy--regex-function 'ivy--regex-fuzzy)
+                            (< (length cands) 200)))
+                  ivy--old-cands
+                  (cl-position (nth ivy--index ivy--old-cands)
+                               cands))
+             (funcall func re-str cands))))
+    (when (and (or (string= name "")
+                   (string= name "^"))
+               (not (equal ivy--old-re "")))
+      (setq ivy--index
+            (or (ivy--preselect-index
+                 (ivy-state-preselect ivy-last)
+                 cands)
+                ivy--index)))))
+
+(defun ivy-recompute-index-swiper (_re-str cands)
+  (let ((tail (nthcdr ivy--index ivy--old-cands))
+        idx)
+    (if (and tail ivy--old-cands (not (equal "^" ivy--old-re)))
+        (progn
+          (while (and tail (null idx))
+            ;; Compare with eq to handle equal duplicates in cands
+            (setq idx (cl-position (pop tail) cands)))
+          (or
+           idx
+           (1- (length cands))))
+      (if ivy--old-cands
+          ivy--index
+        ;; already in ivy-state-buffer
+        (let ((n (line-number-at-pos))
+              (res 0)
+              (i 0))
+          (dolist (c cands)
+            (when (eq n (read (get-text-property 0 'display c)))
+              (setq res i))
+            (cl-incf i))
+          res)))))
+
+(defun ivy-recompute-index-swiper-async (_re-str cands)
+  (if (null ivy--old-cands)
+      (let ((ln (with-ivy-window
+                  (line-number-at-pos))))
+        (or
+         ;; closest to current line going forwards
+         (cl-position-if (lambda (x)
+                           (>= (string-to-number x) ln))
+                         cands)
+         ;; closest to current line going backwards
+         (1- (length cands))))
+    (let ((tail (nthcdr ivy--index ivy--old-cands))
+          idx)
+      (if (and tail ivy--old-cands (not (equal "^" ivy--old-re)))
+          (progn
+            (while (and tail (null idx))
+              ;; Compare with `equal', since the collection is re-created
+              ;; each time with `split-string'
+              (setq idx (cl-position (pop tail) cands :test #'equal)))
+            (or idx 0))
+        ivy--index))))
+
+(defun ivy-recompute-index-zero (_re-str _cands)
+  0)
+
+(defcustom ivy-minibuffer-faces
+  '(ivy-minibuffer-match-face-1
+    ivy-minibuffer-match-face-2
+    ivy-minibuffer-match-face-3
+    ivy-minibuffer-match-face-4)
+  "List of `ivy' faces for minibuffer group matches."
+  :type '(repeat :tag "Faces"
+          (choice
+           (const ivy-minibuffer-match-face-1)
+           (const ivy-minibuffer-match-face-2)
+           (const ivy-minibuffer-match-face-3)
+           (const ivy-minibuffer-match-face-4)
+           (face :tag "Other face"))))
+
+(defvar ivy-flx-limit 200
+  "Used to conditionally turn off flx sorting.
+
+When the amount of matching candidates exceeds this limit, then
+no sorting is done.")
+
+(defun ivy--flx-sort (name cands)
+  "Sort according to closeness to string NAME the string list CANDS."
+  (condition-case nil
+      (if (and cands
+               (< (length cands) ivy-flx-limit))
+          (let* ((flx-name (if (string-match "^\\^" name)
+                               (substring name 1)
+                             name))
+                 (cands-with-score
+                  (delq nil
+                        (mapcar
+                         (lambda (x)
+                           (let ((score (flx-score x flx-name ivy--flx-cache)))
+                             (and score
+                                  (cons score x))))
+                         cands))))
+            (if cands-with-score
+                (mapcar (lambda (x)
+                          (let ((str (copy-sequence (cdr x)))
+                                (i 0)
+                                (last-j -2))
+                            (dolist (j (cdar x))
+                              (unless (eq j (1+ last-j))
+                                (cl-incf i))
+                              (setq last-j j)
+                              (ivy-add-face-text-property
+                               j (1+ j)
+                               (nth (1+ (mod (+ i 2) (1- (length ivy-minibuffer-faces))))
+                                    ivy-minibuffer-faces)
+                               str))
+                            str))
+                        (sort cands-with-score
+                              (lambda (x y)
+                                (> (caar x) (caar y)))))
+              cands))
+        cands)
+    (error
+     cands)))
+
+(defcustom ivy-format-function 'ivy-format-function-default
+  "Function to transform the list of candidates into a string.
+This string is inserted into the minibuffer."
+  :type '(choice
+          (const :tag "Default" ivy-format-function-default)
+          (const :tag "Arrow prefix" ivy-format-function-arrow)
+          (const :tag "Full line" ivy-format-function-line)))
+
+(defun ivy--truncate-string (str width)
+  "Truncate STR to WIDTH."
+  (if (> (string-width str) width)
+      (concat (substring str 0 (min (- width 3)
+                                    (- (length str) 3))) "...")
+    str))
+
+(defun ivy--format-function-generic (selected-fn other-fn strs separator)
+  "Transform CAND-PAIRS into a string for minibuffer.
+SELECTED-FN and OTHER-FN each take one string argument.
+SEPARATOR is used to join the candidates."
+  (let ((i -1))
+    (mapconcat
+     (lambda (str)
+       (let ((curr (eq (cl-incf i) ivy--index)))
+         (if curr
+             (funcall selected-fn str)
+           (funcall other-fn str))))
+     strs
+     separator)))
+
+(defun ivy-format-function-default (cands)
+  "Transform CAND-PAIRS into a string for minibuffer."
+  (ivy--format-function-generic
+   (lambda (str)
+     (ivy--add-face str 'ivy-current-match))
+   #'identity
+   cands
+   "\n"))
+
+(defun ivy-format-function-arrow (cands)
+  "Transform CAND-PAIRS into a string for minibuffer."
+  (ivy--format-function-generic
+   (lambda (str)
+     (concat "> " (ivy--add-face str 'ivy-current-match)))
+   (lambda (str)
+     (concat "  " str))
+   cands
+   "\n"))
+
+(defun ivy-format-function-line (cands)
+  "Transform CAND-PAIRS into a string for minibuffer."
+  (ivy--format-function-generic
+   (lambda (str)
+     (ivy--add-face (concat str "\n") 'ivy-current-match))
+   (lambda (str)
+     (concat str "\n"))
+   cands
+   ""))
+
+(defun ivy-add-face-text-property (start end face str)
+  (if (fboundp 'add-face-text-property)
+      (add-face-text-property
+       start end face nil str)
+    (font-lock-append-text-property
+     start end 'face face str)))
+
+(defun ivy--format-minibuffer-line (str)
+  (let ((start
+         (if (and (memq (ivy-state-caller ivy-last)
+                        '(counsel-git-grep counsel-ag counsel-pt))
+                  (string-match "^[^:]+:[^:]+:" str))
+             (match-end 0)
+           0))
+        (str (copy-sequence str)))
+    (cond ((eq ivy--regex-function 'ivy--regex-ignore-order)
+           (when (consp ivy--old-re)
+             (let ((i 1))
+               (dolist (re ivy--old-re)
+                 (when (string-match (car re) str)
+                   (ivy-add-face-text-property
+                    (match-beginning 0) (match-end 0)
+                    (nth (1+ (mod (+ i 2) (1- (length ivy-minibuffer-faces))))
+                         ivy-minibuffer-faces)
+                    str))
+                 (cl-incf i)))))
+          ((and (eq ivy-display-style 'fancy)
+                (not (eq ivy--regex-function 'ivy--regex-fuzzy)))
+           (unless ivy--old-re
+             (setq ivy--old-re (funcall ivy--regex-function ivy-text)))
+           (ignore-errors
+             (while (and (string-match ivy--old-re str start)
+                         (> (- (match-end 0) (match-beginning 0)) 0))
+               (setq start (match-end 0))
+               (let ((i 0))
+                 (while (<= i ivy--subexps)
+                   (let ((face
+                          (cond ((zerop ivy--subexps)
+                                 (cadr ivy-minibuffer-faces))
+                                ((zerop i)
+                                 (car ivy-minibuffer-faces))
+                                (t
+                                 (nth (1+ (mod (+ i 2) (1- (length ivy-minibuffer-faces))))
+                                      ivy-minibuffer-faces)))))
+                     (ivy-add-face-text-property
+                      (match-beginning i) (match-end i)
+                      face str))
+                   (cl-incf i)))))))
+    str))
+
+(ivy-set-display-transformer
+ 'counsel-find-file 'ivy-read-file-transformer)
+(ivy-set-display-transformer
+ 'read-file-name-internal 'ivy-read-file-transformer)
+
+(defun ivy-read-file-transformer (str)
+  (if (string-match-p "/\\'" str)
+      (propertize str 'face 'ivy-subdir)
+    str))
+
+(defun ivy--format (cands)
+  "Return a string for CANDS suitable for display in the minibuffer.
+CANDS is a list of strings."
+  (setq ivy--length (length cands))
+  (when (>= ivy--index ivy--length)
+    (setq ivy--index (max (1- ivy--length) 0)))
+  (if (null cands)
+      (setq ivy--current "")
+    (let* ((half-height (/ ivy-height 2))
+           (start (max 0 (- ivy--index half-height)))
+           (end (min (+ start (1- ivy-height)) ivy--length))
+           (start (max 0 (min start (- end (1- ivy-height)))))
+           (cands (cl-subseq cands start end))
+           (index (- ivy--index start))
+           transformer-fn)
+      (setq ivy--current (copy-sequence (nth index cands)))
+      (when (setq transformer-fn (ivy-state-display-transformer-fn ivy-last))
+        (with-ivy-window
+          (setq cands (mapcar transformer-fn cands))))
+      (let* ((ivy--index index)
+             (cands (mapcar
+                     #'ivy--format-minibuffer-line
+                     cands))
+             (res (concat "\n" (funcall ivy-format-function cands))))
+        (put-text-property 0 (length res) 'read-only nil res)
+        res))))
+
+(defvar ivy--virtual-buffers nil
+  "Store the virtual buffers alist.")
+
+(defvar recentf-list)
+
+(defcustom ivy-virtual-abbreviate 'name
+  "The mode of abbreviation for virtual buffer names."
+  :type '(choice
+          (const :tag "Only name" name)
+          (const :tag "Full path" full)
+          ;; eventually, uniquify
+          ))
+
+(defun ivy--virtual-buffers ()
+  "Adapted from `ido-add-virtual-buffers-to-list'."
+  (unless recentf-mode
+    (recentf-mode 1))
+  (let ((bookmarks (and (boundp 'bookmark-alist)
+                        bookmark-alist))
+        virtual-buffers name)
+    (dolist (head (append
+                   recentf-list
+                   (delete "   - no file -"
+                           (delq nil (mapcar (lambda (bookmark)
+                                               (cdr (assoc 'filename bookmark)))
+                                             bookmarks)))))
+      (setq name
+            (if (eq ivy-virtual-abbreviate 'name)
+                (file-name-nondirectory head)
+              (expand-file-name head)))
+      (when (equal name "")
+        (setq name (file-name-nondirectory (directory-file-name head))))
+      (when (equal name "")
+        (setq name head))
+      (and (not (equal name ""))
+           (null (get-file-buffer head))
+           (not (assoc name virtual-buffers))
+           (push (cons name head) virtual-buffers)))
+    (when virtual-buffers
+      (dolist (comp virtual-buffers)
+        (put-text-property 0 (length (car comp))
+                           'face 'ivy-virtual
+                           (car comp)))
+      (setq ivy--virtual-buffers (nreverse virtual-buffers))
+      (mapcar #'car ivy--virtual-buffers))))
+
+(defcustom ivy-ignore-buffers '("\\` ")
+  "List of regexps or functions matching buffer names to ignore."
+  :type '(repeat (choice regexp function)))
+
+(defun ivy--buffer-list (str &optional virtual predicate)
+  "Return the buffers that match STR.
+When VIRTUAL is non-nil, add virtual buffers."
+  (delete-dups
+   (append
+    (mapcar
+     (lambda (x)
+       (if (with-current-buffer x
+             (file-remote-p
+              (abbreviate-file-name default-directory)))
+           (propertize x 'face 'ivy-remote)
+         x))
+     (all-completions str 'internal-complete-buffer predicate))
+    (and virtual
+         (ivy--virtual-buffers)))))
+
+(defvar ivy-views (and nil
+                       `(("ivy + *scratch* {}"
+                          (vert
+                           (file ,(expand-file-name "ivy.el"))
+                           (buffer "*scratch*")))
+                         ("swiper + *scratch* {}"
+                          (horz
+                           (file ,(expand-file-name "swiper.el"))
+                           (buffer "*scratch*")))))
+  "Store window configurations selectable by `ivy-switch-buffer'.
+
+The default value is given as an example.
+
+Each element is a list of (NAME TREE). NAME is a string, it's
+recommended to end it with a distinctive snippet e.g. \"{}\" so
+that it's easy to distinguish the window configurations.
+
+TREE is a nested list with the following valid cars:
+- vert: split the window vertically
+- horz: split the window horizontally
+- file: open the specified file
+- buffer: open the specified buffer
+
+TREE can be nested multiple times to have mulitple window splits.")
+
+(defun ivy-source-views ()
+  (mapcar #'car ivy-views))
+
+(ivy-set-sources
+ 'ivy-switch-buffer
+ '((original-source)
+   (ivy-source-views)))
+
+(defun ivy-set-view-recur (view)
+  (cond ((eq (car view) 'vert)
+         (let ((wnd1 (selected-window))
+               (wnd2 (split-window-vertically)))
+           (with-selected-window wnd1
+             (ivy-set-view-recur (nth 1 view)))
+           (with-selected-window wnd2
+             (ivy-set-view-recur (nth 2 view)))))
+        ((eq (car view) 'horz)
+         (let ((wnd1 (selected-window))
+               (wnd2 (split-window-horizontally)))
+           (with-selected-window wnd1
+             (ivy-set-view-recur (nth 1 view)))
+           (with-selected-window wnd2
+             (ivy-set-view-recur (nth 2 view)))))
+        ((eq (car view) 'file)
+         (let* ((name (cadr view))
+                (virtual (assoc name ivy--virtual-buffers))
+                buffer)
+           (cond ((setq buffer (get-buffer name))
+                  (switch-to-buffer buffer nil 'force-same-window))
+                 (virtual
+                  (find-file (cdr virtual)))
+                 ((file-exists-p name)
+                  (find-file name)))))
+        ((eq (car view) 'buffer)
+         (switch-to-buffer (cadr view)))
+        ((eq (car view) 'sexp)
+         (eval (cadr view)))))
+
+(defun ivy--switch-buffer-action (buffer)
+  "Switch to BUFFER.
+BUFFER may be a string or nil."
+  (with-ivy-window
+    (if (zerop (length buffer))
+        (switch-to-buffer
+         ivy-text nil 'force-same-window)
+      (let ((virtual (assoc buffer ivy--virtual-buffers))
+            (view (assoc buffer ivy-views)))
+        (cond ((and virtual
+                    (not (get-buffer buffer)))
+               (find-file (cdr virtual)))
+              (view
+               (delete-other-windows)
+               (ivy-set-view-recur (cadr view)))
+              (t
+               (switch-to-buffer
+                buffer nil 'force-same-window)))))))
+
+(defun ivy--switch-buffer-other-window-action (buffer)
+  "Switch to BUFFER in other window.
+BUFFER may be a string or nil."
+  (if (zerop (length buffer))
+      (switch-to-buffer-other-window ivy-text)
+    (let ((virtual (assoc buffer ivy--virtual-buffers)))
+      (if (and virtual
+               (not (get-buffer buffer)))
+          (find-file-other-window (cdr virtual))
+        (switch-to-buffer-other-window buffer)))))
+
+(defun ivy--rename-buffer-action (buffer)
+  "Rename BUFFER."
+  (let ((new-name (read-string "Rename buffer (to new name): ")))
+    (with-current-buffer buffer
+      (rename-buffer new-name))))
+
+(defvar ivy-switch-buffer-map (make-sparse-keymap))
+
+(ivy-set-actions
+ 'ivy-switch-buffer
+ '(("k"
+    (lambda (x)
+      (kill-buffer x)
+      (ivy--reset-state ivy-last))
+    "kill")
+   ("j"
+    ivy--switch-buffer-other-window-action
+    "other")
+   ("r"
+    ivy--rename-buffer-action
+    "rename")))
+
+(defun ivy--switch-buffer-matcher (regexp candidates)
+  "Return REGEXP-matching CANDIDATES.
+Skip buffers that match `ivy-ignore-buffers'."
+  (let ((res (ivy--re-filter regexp candidates)))
+    (if (or (null ivy-use-ignore)
+            (null ivy-ignore-buffers))
+        res
+      (or (cl-remove-if
+           (lambda (buf)
+             (cl-find-if
+              (lambda (f-or-r)
+                (if (functionp f-or-r)
+                    (funcall f-or-r buf)
+                  (string-match-p f-or-r buf)))
+              ivy-ignore-buffers))
+           res)
+          (and (eq ivy-use-ignore t)
+               res)))))
+
+(ivy-set-display-transformer
+ 'ivy-switch-buffer 'ivy-switch-buffer-transformer)
+(ivy-set-display-transformer
+ 'internal-complete-buffer 'ivy-switch-buffer-transformer)
+
+(defun ivy-switch-buffer-transformer (str)
+  (let ((b (get-buffer str)))
+    (if (and b
+             (buffer-file-name b)
+             (buffer-modified-p b))
+        (propertize str 'face 'ivy-modified-buffer)
+      str)))
+
+(defun ivy-switch-buffer-occur ()
+  "Occur function for `ivy-switch-buffer' that uses `ibuffer'."
+  (let* ((cand-regexp
+          (concat "\\(" (mapconcat #'regexp-quote ivy--old-cands "\\|") "\\)"))
+         (new-qualifier `((name . ,cand-regexp))))
+    (ibuffer nil (buffer-name) new-qualifier)))
+
+;;;###autoload
+(defun ivy-switch-buffer ()
+  "Switch to another buffer."
+  (interactive)
+  (let ((this-command 'ivy-switch-buffer))
+    (ivy-read "Switch to buffer: " 'internal-complete-buffer
+              :matcher #'ivy--switch-buffer-matcher
+              :preselect (buffer-name (other-buffer (current-buffer)))
+              :action #'ivy--switch-buffer-action
+              :keymap ivy-switch-buffer-map
+              :caller 'ivy-switch-buffer)))
+
+;;;###autoload
+(defun ivy-switch-buffer-other-window ()
+  "Switch to another buffer in another window."
+  (interactive)
+  (ivy-read "Switch to buffer in other window: " 'internal-complete-buffer
+            :preselect (buffer-name (other-buffer (current-buffer)))
+            :action #'ivy--switch-buffer-other-window-action
+            :keymap ivy-switch-buffer-map
+            :caller 'ivy-switch-buffer-other-window))
+
+;;;###autoload
+(defun ivy-recentf ()
+  "Find a file on `recentf-list'."
+  (interactive)
+  (ivy-read "Recentf: " recentf-list
+            :action
+            (lambda (f)
+              (with-ivy-window
+                (find-file f)))
+            :caller 'ivy-recentf))
+
+(defun ivy-yank-word ()
+  "Pull next word from buffer into search string."
+  (interactive)
+  (let (amend)
+    (with-ivy-window
+      (let ((pt (point))
+            (le (line-end-position)))
+        (forward-word 1)
+        (if (> (point) le)
+            (goto-char pt)
+          (setq amend (buffer-substring-no-properties pt (point))))))
+    (when amend
+      (insert (replace-regexp-in-string "  +" " " amend)))))
+
+(defun ivy-kill-ring-save ()
+  "Store the current candidates into the kill ring.
+If the region is active, forward to `kill-ring-save' instead."
+  (interactive)
+  (if (region-active-p)
+      (call-interactively 'kill-ring-save)
+    (kill-new
+     (mapconcat
+      #'identity
+      ivy--old-cands
+      "\n"))))
+
+(defun ivy-insert-current ()
+  "Make the current candidate into current input.
+Don't finish completion."
+  (interactive)
+  (delete-minibuffer-contents)
+  (if (and ivy--directory
+           (string-match "/$" ivy--current))
+      (insert (substring ivy--current 0 -1))
+    (insert ivy--current)))
+
+(defun ivy-toggle-fuzzy ()
+  "Toggle the re builder between `ivy--regex-fuzzy' and `ivy--regex-plus'."
+  (interactive)
+  (setq ivy--old-re nil)
+  (if (eq ivy--regex-function 'ivy--regex-fuzzy)
+      (setq ivy--regex-function 'ivy--regex-plus)
+    (setq ivy--regex-function 'ivy--regex-fuzzy)))
+
+(defun ivy-reverse-i-search ()
+  "Enter a recursive `ivy-read' session using the current history.
+The selected history element will be inserted into the minibuffer."
+  (interactive)
+  (let ((enable-recursive-minibuffers t)
+        (history (symbol-value (ivy-state-history ivy-last)))
+        (old-last ivy-last)
+        (ivy-recursive-restore nil))
+    (ivy-read "Reverse-i-search: "
+              history
+              :action (lambda (x)
+                        (ivy--reset-state
+                         (setq ivy-last old-last))
+                        (delete-minibuffer-contents)
+                        (insert (substring-no-properties x))
+                        (ivy--cd-maybe)))))
+
+(defun ivy-restrict-to-matches ()
+  "Restrict candidates to current matches and erase input."
+  (interactive)
+  (delete-minibuffer-contents)
+  (setq ivy--all-candidates
+        (ivy--filter ivy-text ivy--all-candidates)))
+
+;;* Occur
+(defvar-local ivy-occur-last nil
+  "Buffer-local value of `ivy-last'.
+Can't re-use `ivy-last' because using e.g. `swiper' in the same
+buffer would modify `ivy-last'.")
+
+(defvar ivy-occur-mode-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map [mouse-1] 'ivy-occur-click)
+    (define-key map (kbd "RET") 'ivy-occur-press)
+    (define-key map (kbd "j") 'ivy-occur-next-line)
+    (define-key map (kbd "k") 'ivy-occur-previous-line)
+    (define-key map (kbd "h") 'backward-char)
+    (define-key map (kbd "l") 'forward-char)
+    (define-key map (kbd "f") 'ivy-occur-press)
+    (define-key map (kbd "g") 'ivy-occur-revert-buffer)
+    (define-key map (kbd "a") 'ivy-occur-read-action)
+    (define-key map (kbd "o") 'ivy-occur-dispatch)
+    (define-key map (kbd "c") 'ivy-occur-toggle-calling)
+    (define-key map (kbd "q") 'quit-window)
+    map)
+  "Keymap for Ivy Occur mode.")
+
+(defun ivy-occur-toggle-calling ()
+  "Toggle `ivy-calling'."
+  (interactive)
+  (if (setq ivy-calling (not ivy-calling))
+      (progn
+        (setq mode-name "Ivy-Occur [calling]")
+        (ivy-occur-press))
+    (setq mode-name "Ivy-Occur"))
+  (force-mode-line-update))
+
+(defun ivy-occur-next-line (&optional arg)
+  "Move the cursor down ARG lines.
+When `ivy-calling' isn't nil, call `ivy-occur-press'."
+  (interactive "p")
+  (forward-line arg)
+  (when ivy-calling
+    (ivy-occur-press)))
+
+(defun ivy-occur-previous-line (&optional arg)
+  "Move the cursor up ARG lines.
+When `ivy-calling' isn't nil, call `ivy-occur-press'."
+  (interactive "p")
+  (forward-line (- arg))
+  (when ivy-calling
+    (ivy-occur-press)))
+
+(define-derived-mode ivy-occur-mode fundamental-mode "Ivy-Occur"
+  "Major mode for output from \\[ivy-occur].
+
+\\{ivy-occur-mode-map}")
+
+(defvar ivy-occur-grep-mode-map
+  (let ((map (copy-keymap ivy-occur-mode-map)))
+    (define-key map (kbd "C-x C-q") 'ivy-wgrep-change-to-wgrep-mode)
+    map)
+  "Keymap for Ivy Occur Grep mode.")
+
+(define-derived-mode ivy-occur-grep-mode grep-mode "Ivy-Occur"
+  "Major mode for output from \\[ivy-occur].
+
+\\{ivy-occur-grep-mode-map}")
+
+(defvar ivy--occurs-list nil
+  "A list of custom occur generators per command.")
+
+(defun ivy-set-occur (cmd occur)
+  "Assign CMD a custom OCCUR function."
+  (setq ivy--occurs-list
+        (plist-put ivy--occurs-list cmd occur)))
+
+(ivy-set-occur 'ivy-switch-buffer 'ivy-switch-buffer-occur)
+(ivy-set-occur 'ivy-switch-buffer-other-window 'ivy-switch-buffer-occur)
+
+(defun ivy--occur-insert-lines (cands)
+  (dolist (str cands)
+    (add-text-properties
+     0 (length str)
+     `(mouse-face
+       highlight
+       help-echo "mouse-1: call ivy-action")
+     str)
+    (insert str "\n")))
+
+(defun ivy-occur ()
+  "Stop completion and put the current matches into a new buffer.
+
+The new buffer remembers current action(s).
+
+While in the *ivy-occur* buffer, selecting a candidate with RET or
+a mouse click will call the appropriate action for that candidate.
+
+There is no limit on the number of *ivy-occur* buffers."
+  (interactive)
+  (if (not (window-minibuffer-p))
+      (user-error "No completion session is active")
+    (let* ((caller (ivy-state-caller ivy-last))
+           (occur-fn (plist-get ivy--occurs-list caller))
+           (buffer
+            (generate-new-buffer
+             (format "*ivy-occur%s \"%s\"*"
+                     (if caller
+                         (concat " " (prin1-to-string caller))
+                       "")
+                     ivy-text))))
+      (with-current-buffer buffer
+        (let ((inhibit-read-only t))
+          (erase-buffer)
+          (if occur-fn
+              (funcall occur-fn)
+            (ivy-occur-mode)
+            (insert (format "%d candidates:\n" (length ivy--old-cands)))
+            (ivy--occur-insert-lines
+             (mapcar
+              (lambda (cand) (concat "    " cand))
+              ivy--old-cands))))
+        (setf (ivy-state-text ivy-last) ivy-text)
+        (setq ivy-occur-last ivy-last)
+        (setq-local ivy--directory ivy--directory))
+      (ivy-exit-with-action
+       `(lambda (_) (pop-to-buffer ,buffer))))))
+
+(defun ivy-occur-revert-buffer ()
+  "Refresh the buffer making it up-to date with the collection.
+
+Currently only works for `swiper'. In that specific case, the
+*ivy-occur* buffer becomes nearly useless as the orignal buffer
+is updated, since the line numbers no longer match.
+
+Calling this function is as if you called `ivy-occur' on the
+updated original buffer."
+  (interactive)
+  (let ((caller (ivy-state-caller ivy-occur-last))
+        (ivy-last ivy-occur-last))
+    (cond ((eq caller 'swiper)
+           (let ((buffer (ivy-state-buffer ivy-occur-last)))
+             (unless (buffer-live-p buffer)
+               (error "buffer was killed"))
+             (let ((inhibit-read-only t))
+               (erase-buffer)
+               (funcall (plist-get ivy--occurs-list caller) t))))
+          ((memq caller '(counsel-git-grep counsel-grep counsel-ag))
+           (let ((inhibit-read-only t))
+             (erase-buffer)
+             (funcall (plist-get ivy--occurs-list caller)))))))
+
+(declare-function wgrep-change-to-wgrep-mode "ext:wgrep")
+
+(defun ivy-wgrep-change-to-wgrep-mode ()
+  "Forward to `wgrep-change-to-wgrep-mode'."
+  (interactive)
+  (if (require 'wgrep nil 'noerror)
+      (wgrep-change-to-wgrep-mode)
+    (error "Package wgrep isn't installed")))
+
+(defun ivy-occur-read-action ()
+  "Select one of the available actions as the current one."
+  (interactive)
+  (let ((ivy-last ivy-occur-last))
+    (ivy-read-action)))
+
+(defun ivy-occur-dispatch ()
+  "Call one of the available actions on the current item."
+  (interactive)
+  (let* ((state-action (ivy-state-action ivy-occur-last))
+         (actions (if (symbolp state-action)
+                      state-action
+                    (copy-sequence state-action))))
+    (unwind-protect
+         (progn
+           (ivy-occur-read-action)
+           (ivy-occur-press))
+      (setf (ivy-state-action ivy-occur-last) actions))))
+
+(defun ivy-occur-click (event)
+  "Execute action for the current candidate.
+EVENT gives the mouse position."
+  (interactive "e")
+  (let ((window (posn-window (event-end event)))
+        (pos (posn-point (event-end event))))
+    (with-current-buffer (window-buffer window)
+      (goto-char pos)
+      (ivy-occur-press))))
+
+(declare-function swiper--cleanup "swiper")
+(declare-function swiper--add-overlays "swiper")
+(defvar ivy-occur-timer nil)
+(defvar counsel-grep-last-line)
+
+(defun ivy-occur-press ()
+  "Execute action for the current candidate."
+  (interactive)
+  (when (save-excursion
+          (beginning-of-line)
+          (looking-at "\\(?:./\\|    \\)\\(.*\\)$"))
+    (when (memq (ivy-state-caller ivy-occur-last)
+                '(swiper counsel-git-grep counsel-grep counsel-ag
+                  counsel-describe-function counsel-describe-variable))
+      (let ((window (ivy-state-window ivy-occur-last)))
+        (when (or (null (window-live-p window))
+                  (equal window (selected-window)))
+          (save-selected-window
+            (setf (ivy-state-window ivy-occur-last)
+                  (display-buffer (ivy-state-buffer ivy-occur-last)
+                                  'display-buffer-pop-up-window))))))
+    (let* ((ivy-last ivy-occur-last)
+           (ivy-text (ivy-state-text ivy-last))
+           (str (buffer-substring
+                 (match-beginning 1)
+                 (match-end 1)))
+           (coll (ivy-state-collection ivy-last))
+           (action (ivy--get-action ivy-last))
+           (ivy-exit 'done))
+      (with-ivy-window
+        (setq counsel-grep-last-line nil)
+        (funcall action
+                 (if (and (consp coll)
+                          (consp (car coll)))
+                     (cdr (assoc str coll))
+                   str))
+        (if (memq (ivy-state-caller ivy-last)
+                  '(swiper counsel-git-grep counsel-grep))
+            (with-current-buffer (window-buffer (selected-window))
+              (swiper--cleanup)
+              (swiper--add-overlays
+               (ivy--regex ivy-text)
+               (line-beginning-position)
+               (line-end-position)
+               (selected-window))
+              (when (timerp ivy-occur-timer)
+                (cancel-timer ivy-occur-timer))
+              (setq ivy-occur-timer (run-at-time 1.0 nil 'swiper--cleanup))))))))
+
+(defvar ivy-help-file (let ((default-directory
+                             (if load-file-name
+                                 (file-name-directory load-file-name)
+                               default-directory)))
+                        (if (file-exists-p "ivy-help.org")
+                            (expand-file-name "ivy-help.org")
+                          (if (file-exists-p "doc/ivy-help.org")
+                              (expand-file-name "doc/ivy-help.org"))))
+  "The file for `ivy-help'.")
+
+(defun ivy-help ()
+  "Help for `ivy'."
+  (interactive)
+  (let ((buf (get-buffer "*Ivy Help*")))
+    (unless buf
+      (setq buf (get-buffer-create "*Ivy Help*"))
+      (with-current-buffer buf
+        (insert-file-contents ivy-help-file)
+        (org-mode)
+        (view-mode)
+        (goto-char (point-min))))
+    (if (eq this-command 'ivy-help)
+        (switch-to-buffer buf)
+      (with-ivy-window
+        (pop-to-buffer buf)))
+    (view-mode)
+    (goto-char (point-min))))
+
+(provide 'ivy)
+
+;;; ivy.el ends here
new file mode 100644
--- /dev/null
+++ b/elpa/ivy-0.8.0/swiper.el
@@ -0,0 +1,725 @@
+;;; swiper.el --- Isearch with an overview. Oh, man! -*- lexical-binding: t -*-
+
+;; Copyright (C) 2015  Free Software Foundation, Inc.
+
+;; Author: Oleh Krehel <ohwoeowho@gmail.com>
+;; URL: https://github.com/abo-abo/swiper
+;; Version: 0.8.0
+;; Package-Requires: ((emacs "24.1") (ivy "0.8.0"))
+;; Keywords: matching
+
+;; This file is part of GNU Emacs.
+
+;; This file is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; For a full copy of the GNU General Public License
+;; see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+;;
+;; This package gives an overview of the current regex search
+;; candidates.  The search regex can be split into groups with a
+;; space.  Each group is highlighted with a different face.
+;;
+;; It can double as a quick `regex-builder', although only single
+;; lines will be matched.
+;;
+;; It also provides `ivy-mode': a global minor mode that uses the
+;; matching back end of `swiper' for all matching on your system,
+;; including file matching. You can use it in place of `ido-mode'
+;; (can't have both on at once).
+
+;;; Code:
+(require 'ivy)
+
+(defgroup swiper nil
+  "`isearch' with an overview."
+  :group 'matching
+  :prefix "swiper-")
+
+(defface swiper-match-face-1
+  '((t (:inherit isearch-lazy-highlight-face)))
+  "The background face for `swiper' matches.")
+
+(defface swiper-match-face-2
+  '((t (:inherit isearch)))
+  "Face for `swiper' matches modulo 1.")
+
+(defface swiper-match-face-3
+  '((t (:inherit match)))
+  "Face for `swiper' matches modulo 2.")
+
+(defface swiper-match-face-4
+  '((t (:inherit isearch-fail)))
+  "Face for `swiper' matches modulo 3.")
+
+(defface swiper-line-face
+  '((t (:inherit highlight)))
+  "Face for current `swiper' line.")
+
+(defcustom swiper-faces '(swiper-match-face-1
+                          swiper-match-face-2
+                          swiper-match-face-3
+                          swiper-match-face-4)
+  "List of `swiper' faces for group matches."
+  :group 'ivy-faces
+  :type 'list)
+
+(defcustom swiper-min-highlight 2
+  "Only highlight matches for regexps at least this long."
+  :type 'integer)
+
+(defvar swiper-map
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "M-q") 'swiper-query-replace)
+    (define-key map (kbd "C-l") 'swiper-recenter-top-bottom)
+    (define-key map (kbd "C-'") 'swiper-avy)
+    (define-key map (kbd "C-7") 'swiper-mc)
+    (define-key map (kbd "C-c C-f") 'swiper-toggle-face-matching)
+    map)
+  "Keymap for swiper.")
+
+(defun swiper-query-replace ()
+  "Start `query-replace' with string to replace from last search string."
+  (interactive)
+  (if (null (window-minibuffer-p))
+      (user-error "Should only be called in the minibuffer through `swiper-map'")
+    (let* ((enable-recursive-minibuffers t)
+           (from (ivy--regex ivy-text))
+           (to (minibuffer-with-setup-hook
+                   (lambda ()
+                     (setq minibuffer-default
+                           (if (string-match "\\`\\\\_<\\(.*\\)\\\\_>\\'" ivy-text)
+                               (match-string 1 ivy-text)
+                             ivy-text)))
+                 (read-from-minibuffer (format "Query replace %s with: " from)))))
+      (swiper--cleanup)
+      (ivy-exit-with-action
+       (lambda (_)
+         (with-ivy-window
+           (move-beginning-of-line 1)
+           (perform-replace from to
+                            t t nil)))))))
+
+(defvar avy-background)
+(defvar avy-all-windows)
+(defvar avy-style)
+(defvar avy-keys)
+(declare-function avy--regex-candidates "ext:avy")
+(declare-function avy--process "ext:avy")
+(declare-function avy--overlay-post "ext:avy")
+(declare-function avy-action-goto "ext:avy")
+(declare-function avy--done "ext:avy")
+(declare-function avy--make-backgrounds "ext:avy")
+(declare-function avy-window-list "ext:avy")
+(declare-function avy-read "ext:avy")
+(declare-function avy-read-de-bruijn "ext:avy")
+(declare-function avy-tree "ext:avy")
+(declare-function avy-push-mark "ext:avy")
+(declare-function avy--remove-leading-chars "ext:avy")
+
+;;;###autoload
+(defun swiper-avy ()
+  "Jump to one of the current swiper candidates."
+  (interactive)
+  (unless (string= ivy-text "")
+    (let* ((avy-all-windows nil)
+           (candidates (append
+                        (with-ivy-window
+                          (avy--regex-candidates
+                           (ivy--regex ivy-text)))
+                        (save-excursion
+                          (save-restriction
+                            (narrow-to-region (window-start) (window-end))
+                            (goto-char (point-min))
+                            (forward-line)
+                            (let ((cands))
+                              (while (< (point) (point-max))
+                                (push (cons (1+ (point))
+                                            (selected-window))
+                                      cands)
+                                (forward-line))
+                              cands)))))
+           (candidate (unwind-protect
+                           (prog2
+                               (avy--make-backgrounds
+                                (append (avy-window-list)
+                                        (list (ivy-state-window ivy-last))))
+                               (if (eq avy-style 'de-bruijn)
+                                   (avy-read-de-bruijn
+                                    candidates avy-keys)
+                                 (avy-read (avy-tree candidates avy-keys)
+                                           #'avy--overlay-post
+                                           #'avy--remove-leading-chars))
+                             (avy-push-mark))
+                        (avy--done))))
+      (if (window-minibuffer-p (cdr candidate))
+          (progn
+            (ivy-set-index (- (line-number-at-pos (car candidate)) 2))
+            (ivy--exhibit)
+            (ivy-done)
+            (ivy-call))
+        (ivy-quit-and-run
+         (avy-action-goto (caar candidate)))))))
+
+(declare-function mc/create-fake-cursor-at-point "ext:multiple-cursors-core")
+(declare-function multiple-cursors-mode "ext:multiple-cursors-core")
+
+(defun swiper-mc ()
+  "Create a fake cursor for each `swiper' candidate."
+  (interactive)
+  (unless (require 'multiple-cursors nil t)
+    (error "multiple-cursors isn't installed"))
+  (unless (window-minibuffer-p)
+    (error "Call me only from `swiper'"))
+  (let ((cands (nreverse ivy--old-cands)))
+    (unless (string= ivy-text "")
+      (ivy-exit-with-action
+       (lambda (_)
+         (let (cand)
+           (while (setq cand (pop cands))
+             (swiper--action cand)
+             (when cands
+               (mc/create-fake-cursor-at-point))))
+         (multiple-cursors-mode 1))))))
+
+(defun swiper-recenter-top-bottom (&optional arg)
+  "Call (`recenter-top-bottom' ARG)."
+  (interactive "P")
+  (with-ivy-window
+    (recenter-top-bottom arg)))
+
+(defvar swiper-font-lock-exclude
+  '(package-menu-mode
+    gnus-summary-mode
+    gnus-article-mode
+    gnus-group-mode
+    emms-playlist-mode
+    emms-stream-mode
+    erc-mode
+    org-agenda-mode
+    dired-mode
+    jabber-chat-mode
+    elfeed-search-mode
+    elfeed-show-mode
+    fundamental-mode
+    Man-mode
+    woman-mode
+    mu4e-view-mode
+    mu4e-headers-mode
+    help-mode
+    debbugs-gnu-mode
+    occur-mode
+    occur-edit-mode
+    bongo-mode
+    bongo-library-mode
+    bongo-playlist-mode
+    eww-mode
+    twittering-mode
+    vc-dir-mode
+    rcirc-mode
+    sauron-mode
+    w3m-mode)
+  "List of major-modes that are incompatible with font-lock-ensure.")
+
+(defun swiper-font-lock-ensure-p ()
+  "Return non-nil if we should font-lock-ensure."
+  (or (derived-mode-p 'magit-mode)
+              (bound-and-true-p magit-blame-mode)
+              (memq major-mode swiper-font-lock-exclude)))
+
+(defun swiper-font-lock-ensure ()
+  "Ensure the entired buffer is highlighted."
+  (unless (swiper-font-lock-ensure-p)
+    (unless (or (> (buffer-size) 100000) (null font-lock-mode))
+      (if (fboundp 'font-lock-ensure)
+          (font-lock-ensure)
+        (with-no-warnings (font-lock-fontify-buffer))))))
+
+(defvar swiper--format-spec ""
+  "Store the current candidates format spec.")
+
+(defvar swiper--width nil
+  "Store the number of digits needed for the longest line nubmer.")
+
+(defvar swiper-use-visual-line nil
+  "When non-nil, use `line-move' instead of `forward-line'.")
+
+(declare-function outline-show-all "outline")
+
+(defun swiper--candidates (&optional numbers-width)
+  "Return a list of this buffer lines.
+
+NUMBERS-WIDTH, when specified, is used for width spec of line
+numbers; replaces calculating the width from buffer line count."
+  (if (and visual-line-mode
+           ;; super-slow otherwise
+           (< (buffer-size) 20000))
+      (progn
+        (when (eq major-mode 'org-mode)
+          (require 'outline)
+          (if (fboundp 'outline-show-all)
+              (outline-show-all)
+            (with-no-warnings
+              (show-all))))
+        (setq swiper-use-visual-line t))
+    (setq swiper-use-visual-line nil))
+  (let ((n-lines (count-lines (point-min) (point-max))))
+    (unless (zerop n-lines)
+      (setq swiper--width (or numbers-width
+                              (1+ (floor (log n-lines 10)))))
+      (setq swiper--format-spec
+            (format "%%-%dd " swiper--width))
+      (let ((line-number 0)
+            (advancer (if swiper-use-visual-line
+                          (lambda (arg) (line-move arg t))
+                        #'forward-line))
+            candidates)
+        (save-excursion
+          (goto-char (point-min))
+          (swiper-font-lock-ensure)
+          (while (< (point) (point-max))
+            (let ((str (concat
+                        " "
+                        (replace-regexp-in-string
+                         "\t" "    "
+                         (if swiper-use-visual-line
+                             (buffer-substring
+                              (save-excursion
+                                (beginning-of-visual-line)
+                                (point))
+                              (save-excursion
+                                (end-of-visual-line)
+                                (point)))
+                           (buffer-substring
+                            (point)
+                            (line-end-position)))))))
+              (remove-text-properties 0 (length str) '(field) str)
+              (put-text-property 0 1 'display
+                                 (format swiper--format-spec
+                                         (cl-incf line-number))
+                                 str)
+              (push str candidates))
+            (funcall advancer 1))
+          (nreverse candidates))))))
+
+(defvar swiper--opoint 1
+  "The point when `swiper' starts.")
+
+;;;###autoload
+(defun swiper (&optional initial-input)
+  "`isearch' with an overview.
+When non-nil, INITIAL-INPUT is the initial search pattern."
+  (interactive)
+  (swiper--ivy (swiper--candidates) initial-input))
+
+(declare-function string-trim-right "subr-x")
+
+(defun swiper-occur (&optional revert)
+  "Generate a custom occur buffer for `swiper'.
+When REVERT is non-nil, regenerate the current *ivy-occur* buffer."
+  (let* ((buffer (ivy-state-buffer ivy-last))
+         (fname (propertize
+                 (with-ivy-window
+                   (if (buffer-file-name buffer)
+                       (file-name-nondirectory
+                        (buffer-file-name buffer))
+                     (buffer-name buffer)))
+                 'face
+                 'compilation-info))
+         (cands (mapcar
+                 (lambda (s)
+                   (format "%s:%s:%s"
+                           fname
+                           (propertize
+                            (string-trim-right
+                             (get-text-property 0 'display s))
+                            'face 'compilation-line-number)
+                           (substring s 1)))
+                 (if (null revert)
+                     ivy--old-cands
+                   (setq ivy--old-re nil)
+                   (let ((ivy--regex-function 'swiper--re-builder))
+                     (ivy--filter
+                      (progn (string-match "\"\\(.*\\)\"" (buffer-name))
+                             (match-string 1 (buffer-name)))
+                      (with-current-buffer buffer
+                        (swiper--candidates))))))))
+    (unless (eq major-mode 'ivy-occur-grep-mode)
+      (ivy-occur-grep-mode)
+      (font-lock-mode -1))
+    (insert (format "-*- mode:grep; default-directory: %S -*-\n\n\n"
+                    default-directory))
+    (insert (format "%d candidates:\n" (length cands)))
+    (ivy--occur-insert-lines
+     (mapcar
+      (lambda (cand) (concat "./" cand))
+      cands))
+    (goto-char (point-min))
+    (forward-line 4)))
+
+(ivy-set-occur 'swiper 'swiper-occur)
+
+(declare-function evil-jumper--set-jump "ext:evil-jumper")
+
+(defvar swiper--current-line nil)
+(defvar swiper--current-match-start nil)
+
+(defun swiper--init ()
+  "Perform initialization common to both completion methods."
+  (setq swiper--current-line nil)
+  (setq swiper--current-match-start nil)
+  (setq swiper--opoint (point))
+  (when (bound-and-true-p evil-jumper-mode)
+    (evil-jumper--set-jump)))
+
+(defun swiper--re-builder (str)
+  "Transform STR into a swiper regex.
+This is the regex used in the minibuffer where candidates have
+line numbers. For the buffer, use `ivy--regex' instead."
+  (replace-regexp-in-string
+   "\t" "    "
+   (cond
+     ((equal str "")
+      "")
+     ((equal str "^")
+      (setq ivy--subexps 0)
+      ".")
+     ((string-match "^\\^" str)
+      (setq ivy--old-re "")
+      (let ((re (ivy--regex-plus (substring str 1))))
+        (if (zerop ivy--subexps)
+            (prog1 (format "^ ?\\(%s\\)" re)
+              (setq ivy--subexps 1))
+          (format "^ %s" re))))
+     (t
+      (ivy--regex-plus str)))))
+
+(defvar swiper-history nil
+  "History for `swiper'.")
+
+(defvar swiper-invocation-face nil
+  "The face at the point of invocation of `swiper'.")
+
+(defun swiper--ivy (candidates &optional initial-input)
+  "Select one of CANDIDATES and move there.
+When non-nil, INITIAL-INPUT is the initial search pattern."
+  (interactive)
+  (swiper--init)
+  (setq swiper-invocation-face
+        (plist-get (text-properties-at (point)) 'face))
+  (let ((preselect
+         (if swiper-use-visual-line
+             (count-screen-lines
+              (point-min)
+              (save-excursion (beginning-of-visual-line) (point)))
+           (1- (line-number-at-pos))))
+        (minibuffer-allow-text-properties t)
+        res)
+    (unwind-protect
+         (and
+          (setq res
+                (ivy-read
+                 "Swiper: "
+                 candidates
+                 :initial-input initial-input
+                 :keymap swiper-map
+                 :preselect preselect
+                 :require-match t
+                 :update-fn #'swiper--update-input-ivy
+                 :unwind #'swiper--cleanup
+                 :action #'swiper--action
+                 :re-builder #'swiper--re-builder
+                 :history 'swiper-history
+                 :caller 'swiper))
+          (point))
+      (unless res
+        (goto-char swiper--opoint)))))
+
+(defun swiper-toggle-face-matching ()
+  "Toggle matching only the candidates with `swiper-invocation-face'."
+  (interactive)
+  (setf (ivy-state-matcher ivy-last)
+        (if (ivy-state-matcher ivy-last)
+            nil
+          #'swiper--face-matcher))
+  (setq ivy--old-re nil))
+
+(defun swiper--face-matcher (regexp candidates)
+  "Return REGEXP-matching CANDIDATES.
+Matched candidates should have `swiper-invocation-face'."
+  (cl-remove-if-not
+   (lambda (x)
+     (and
+      (string-match regexp x)
+      (let ((s (match-string 0 x))
+            (i 0))
+        (while (and (< i (length s))
+                    (text-property-any
+                     i (1+ i)
+                     'face swiper-invocation-face
+                     s))
+          (cl-incf i))
+        (eq i (length s)))))
+   candidates))
+
+(defun swiper--ensure-visible ()
+  "Remove overlays hiding point."
+  (let ((overlays (overlays-at (1- (point))))
+        ov expose)
+    (while (setq ov (pop overlays))
+      (if (and (invisible-p (overlay-get ov 'invisible))
+               (setq expose (overlay-get ov 'isearch-open-invisible)))
+          (funcall expose ov)))))
+
+(defvar swiper--overlays nil
+  "Store overlays.")
+
+(defun swiper--cleanup ()
+  "Clean up the overlays."
+  (while swiper--overlays
+    (delete-overlay (pop swiper--overlays)))
+  (save-excursion
+    (goto-char (point-min))
+    (isearch-clean-overlays)))
+
+(defun swiper--update-input-ivy ()
+  "Called when `ivy' input is updated."
+  (with-ivy-window
+    (swiper--cleanup)
+    (when (> (length ivy--current) 0)
+      (let* ((re (replace-regexp-in-string
+                  "    " "\t"
+                  (funcall ivy--regex-function ivy-text)))
+             (re (if (stringp re) re (caar re)))
+             (str (get-text-property 0 'display ivy--current))
+             (num (if (string-match "^[0-9]+" str)
+                      (string-to-number (match-string 0 str))
+                    0)))
+        (unless (eq this-command 'ivy-yank-word)
+          (when (cl-plusp num)
+            (unless (if swiper--current-line
+                        (eq swiper--current-line num)
+                      (eq (line-number-at-pos) num))
+              (goto-char (point-min))
+              (if swiper-use-visual-line
+                  (line-move (1- num))
+                (forward-line (1- num))))
+            (if (and (equal ivy-text "")
+                     (>= swiper--opoint (line-beginning-position))
+                     (<= swiper--opoint (line-end-position)))
+                (goto-char swiper--opoint)
+              (if (eq swiper--current-line num)
+                  (when swiper--current-match-start
+                    (goto-char swiper--current-match-start))
+                (setq swiper--current-line num))
+              (when (re-search-forward re (line-end-position) t)
+                (setq swiper--current-match-start (match-beginning 0))))
+            (isearch-range-invisible (line-beginning-position)
+                                     (line-end-position))
+            (unless (and (>= (point) (window-start))
+                         (<= (point) (window-end (ivy-state-window ivy-last) t)))
+              (recenter))))
+        (swiper--add-overlays re)))))
+
+(defun swiper--add-overlays (re &optional beg end wnd)
+  "Add overlays for RE regexp in visible part of the current buffer.
+BEG and END, when specified, are the point bounds.
+WND, when specified is the window."
+  (setq wnd (or wnd (ivy-state-window ivy-last)))
+  (let ((ov (if visual-line-mode
+                (make-overlay
+                 (save-excursion
+                   (beginning-of-visual-line)
+                   (point))
+                 (save-excursion
+                   (end-of-visual-line)
+                   (point)))
+              (make-overlay
+               (line-beginning-position)
+               (1+ (line-end-position))))))
+    (overlay-put ov 'face 'swiper-line-face)
+    (overlay-put ov 'window wnd)
+    (push ov swiper--overlays)
+    (let* ((wh (window-height))
+           (beg (or beg (save-excursion
+                          (forward-line (- wh))
+                          (point))))
+           (end (or end (save-excursion
+                          (forward-line wh)
+                          (point)))))
+      (when (>= (length re) swiper-min-highlight)
+        (save-excursion
+          (goto-char beg)
+          ;; RE can become an invalid regexp
+          (while (and (ignore-errors (re-search-forward re end t))
+                      (> (- (match-end 0) (match-beginning 0)) 0))
+            (let ((i 0))
+              (while (<= i ivy--subexps)
+                (when (match-beginning i)
+                  (let ((overlay (make-overlay (match-beginning i)
+                                               (match-end i)))
+                        (face
+                         (cond ((zerop ivy--subexps)
+                                (cadr swiper-faces))
+                               ((zerop i)
+                                (car swiper-faces))
+                               (t
+                                (nth (1+ (mod (+ i 2) (1- (length swiper-faces))))
+                                     swiper-faces)))))
+                    (push overlay swiper--overlays)
+                    (overlay-put overlay 'face face)
+                    (overlay-put overlay 'window wnd)
+                    (overlay-put overlay 'priority i)))
+                (cl-incf i)))))))))
+
+(defun swiper--action (x)
+  "Goto line X."
+  (let ((ln (1- (read (or (get-text-property 0 'display x)
+                          (and (string-match ":\\([0-9]+\\):.*\\'" x)
+                               (match-string-no-properties 1 x))))))
+        (re (ivy--regex ivy-text)))
+    (if (null x)
+        (user-error "No candidates")
+      (with-ivy-window
+        (unless (equal (current-buffer)
+                       (ivy-state-buffer ivy-last))
+          (switch-to-buffer (ivy-state-buffer ivy-last)))
+        (goto-char (point-min))
+        (funcall (if swiper-use-visual-line
+                     #'line-move
+                   #'forward-line)
+                 ln)
+        (re-search-forward re (line-end-position) t)
+        (swiper--ensure-visible)
+        (when (/= (point) swiper--opoint)
+          (unless (and transient-mark-mode mark-active)
+            (when (eq ivy-exit 'done)
+              (push-mark swiper--opoint t)
+              (message "Mark saved where search started"))))
+        (add-to-history
+         'regexp-search-ring
+         re
+         regexp-search-ring-max)))))
+
+;; (define-key isearch-mode-map (kbd "C-o") 'swiper-from-isearch)
+(defun swiper-from-isearch ()
+  "Invoke `swiper' from isearch."
+  (interactive)
+  (let ((query (if isearch-regexp
+                   isearch-string
+                 (regexp-quote isearch-string))))
+    (isearch-exit)
+    (swiper query)))
+
+(defvar swiper-multi-buffers nil
+  "Store the current list of buffers.")
+
+(defvar swiper-multi-candidates nil
+  "Store the list of candidates for `swiper-multi'.")
+
+(defun swiper-multi-prompt ()
+  (format "Buffers (%s): "
+          (mapconcat #'identity swiper-multi-buffers ", ")))
+
+(defun swiper-multi ()
+  "Select one or more buffers.
+Run `swiper' for those buffers."
+  (interactive)
+  (setq swiper-multi-buffers nil)
+  (ivy-read (swiper-multi-prompt)
+            'internal-complete-buffer
+            :action 'swiper-multi-action-1)
+  (ivy-read "Swiper: " swiper-multi-candidates
+            :action 'swiper-multi-action-2
+            :unwind #'swiper--cleanup
+            :caller 'swiper-multi))
+
+(defun swiper-all ()
+  "Run `swiper' for all opened buffers."
+  (interactive)
+  (ivy-read "Swiper: " (swiper--multi-candidates
+                        (cl-remove-if-not
+                         #'buffer-file-name
+                         (buffer-list)))
+            :action 'swiper-multi-action-2
+            :unwind #'swiper--cleanup
+            :update-fn (lambda ()
+                         (swiper-multi-action-2 ivy--current))
+            :caller 'swiper-multi))
+
+(defun swiper--multi-candidates (buffers)
+  (let* ((ww (window-width))
+         (res nil)
+         (column-2 (apply #'max
+                          (mapcar
+                           (lambda (b)
+                             (length (buffer-name b)))
+                           buffers)))
+         (column-1 (- ww 4 column-2 1)))
+    (dolist (buf buffers)
+      (with-current-buffer buf
+        (setq res
+              (append
+               (mapcar
+                (lambda (s)
+                  (setq s (concat (ivy--truncate-string s column-1) " "))
+                  (let ((len (length s)))
+                    (put-text-property
+                     (1- len) len 'display
+                     (concat
+                      (make-string
+                       (max 0
+                            (- ww (string-width s) (length (buffer-name)) 3))
+                       ?\ )
+                      (buffer-name))
+                     s)
+                    s))
+                (swiper--candidates 4))
+               res))
+        nil))
+    res))
+
+(defun swiper-multi-action-1 (x)
+  (if (member x swiper-multi-buffers)
+      (progn
+        (setq swiper-multi-buffers (delete x swiper-multi-buffers)))
+    (unless (equal x "")
+      (setq swiper-multi-buffers (append swiper-multi-buffers (list x)))))
+  (let ((prompt (swiper-multi-prompt)))
+    (setf (ivy-state-prompt ivy-last) prompt)
+    (setq ivy--prompt (concat "%-4d " prompt)))
+  (cond ((memq this-command '(ivy-done
+                              ivy-alt-done
+                              ivy-immediate-done))
+         (setq swiper-multi-candidates
+               (swiper--multi-candidates
+                (mapcar #'get-buffer swiper-multi-buffers))))
+        ((eq this-command 'ivy-call)
+         (delete-minibuffer-contents))))
+
+(defun swiper-multi-action-2 (x)
+  (let ((buf-space (get-text-property (1- (length x)) 'display x)))
+    (with-ivy-window
+      (when (string-match "\\` *\\([^ ]+\\)\\'" buf-space)
+        (switch-to-buffer (match-string 1 buf-space))
+        (goto-char (point-min))
+        (forward-line (1- (read (get-text-property 0 'display x))))
+        (re-search-forward
+         (ivy--regex ivy-text)
+         (line-end-position) t)
+        (unless (eq ivy-exit 'done)
+          (swiper--cleanup)
+          (swiper--add-overlays (ivy--regex ivy-text)))))))
+
+(provide 'swiper)
+
+;;; swiper.el ends here
rename from elpa/pyvenv-1.7/pyvenv-autoloads.el
rename to elpa/pyvenv-1.10/pyvenv-autoloads.el
--- a/elpa/pyvenv-1.7/pyvenv-autoloads.el
+++ b/elpa/pyvenv-1.10/pyvenv-autoloads.el
@@ -3,7 +3,7 @@
 ;;; Code:
 (add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
 
-;;;### (autoloads nil "pyvenv" "pyvenv.el" (21954 12863 384604 302000))
+;;;### (autoloads nil "pyvenv" "pyvenv.el" (22708 23352 530987 47000))
 ;;; Generated autoloads from pyvenv.el
 
 (autoload 'pyvenv-activate "pyvenv" "\
rename from elpa/pyvenv-1.7/pyvenv-pkg.el
rename to elpa/pyvenv-1.10/pyvenv-pkg.el
--- a/elpa/pyvenv-1.7/pyvenv-pkg.el
+++ b/elpa/pyvenv-1.10/pyvenv-pkg.el
@@ -1,1 +1,1 @@
-(define-package "pyvenv" "1.7" "Python virtual environment interface" 'nil)
+(define-package "pyvenv" "1.10" "Python virtual environment interface" 'nil :url "http://github.com/jorgenschaefer/pyvenv" :keywords '("python" "virtualenv" "tools"))
rename from elpa/pyvenv-1.7/pyvenv.el
rename to elpa/pyvenv-1.10/pyvenv.el
--- a/elpa/pyvenv-1.7/pyvenv.el
+++ b/elpa/pyvenv-1.10/pyvenv.el
@@ -1,10 +1,11 @@
 ;;; pyvenv.el --- Python virtual environment interface -*- lexical-binding: t -*-
 
-;; Copyright (C) 2013-2015  Jorgen Schaefer <contact@jorgenschaefer.de>
+;; Copyright (C) 2013-2017  Jorgen Schaefer <contact@jorgenschaefer.de>
 
 ;; Author: Jorgen Schaefer <contact@jorgenschaefer.de>
 ;; URL: http://github.com/jorgenschaefer/pyvenv
-;; Version: 1.7
+;; Package-Version: 1.10
+;; Version: 1.10
 ;; Keywords: Python, Virtualenv, Tools
 
 ;; This program is free software; you can redistribute it and/or
@@ -83,7 +84,8 @@
 
 (defcustom pyvenv-virtualenvwrapper-python
   (or (getenv "VIRTUALENVWRAPPER_PYTHON")
-      (executable-find "python"))
+      (executable-find "python")
+      "python")
   "The python process which has access to the virtualenvwrapper module.
 
 This should be $VIRTUALENVWRAPPER_PYTHON outside of Emacs, but
@@ -144,8 +146,9 @@
   (interactive "DActivate venv: ")
   (setq directory (expand-file-name directory))
   (pyvenv-deactivate)
-  (setq pyvenv-virtual-env directory
-        pyvenv-virtual-env-name (file-name-nondirectory directory)
+  (setq pyvenv-virtual-env (file-name-as-directory directory)
+        pyvenv-virtual-env-name (file-name-nondirectory
+                                 (directory-file-name directory))
         python-shell-virtualenv-path directory
         python-shell-virtualenv-root directory)
   ;; Preserve variables from being overwritten.
@@ -156,24 +159,31 @@
       (setq exec-path old-exec-path
             process-environment old-process-environment)))
   (run-hooks 'pyvenv-pre-activate-hooks)
-  (setq pyvenv-old-exec-path exec-path
-        pyvenv-old-process-environment process-environment
-        ;; For some reason, Emacs adds some directories to `exec-path'
-        ;; but not to `process-environment'?
-        exec-path (if (file-exists-p (format "%s/Scripts" directory))
-                      (cons (format "%s/Scripts" directory) exec-path)
-                    (cons (format "%s/bin" directory) exec-path))
-        process-environment (append
-                             (list
-                              (format "VIRTUAL_ENV=%s" directory)
-                              (format "PATH=%s" (mapconcat (lambda (x)
-                                                             (or x "."))
-                                                           exec-path
-                                                           path-separator))
-                              ;; No "=" means to unset
-                              "PYTHONHOME")
-                             process-environment)
-        )
+  (let ((new-directories (append
+                          ;; Unix
+                          (when (file-exists-p (format "%s/bin" directory))
+                            (list (format "%s/bin" directory)))
+                          ;; Windows
+                          (when (file-exists-p (format "%s/Scripts" directory))
+                            (list (format "%s/Scripts" directory))))))
+    (setq pyvenv-old-exec-path exec-path
+          pyvenv-old-process-environment process-environment
+          ;; For some reason, Emacs adds some directories to `exec-path'
+          ;; but not to `process-environment'?
+          exec-path (append new-directories exec-path)
+          process-environment (append
+                               (list
+                                (format "VIRTUAL_ENV=%s" directory)
+                                (format "PATH=%s"
+                                        (mapconcat 'identity
+                                                   (append new-directories
+                                                           (split-string (getenv "PATH")
+                                                                         path-separator))
+                                                   path-separator))
+                                ;; No "=" means to unset
+                                "PYTHONHOME")
+                               process-environment)
+          ))
   (pyvenv-run-virtualenvwrapper-hook "post_activate")
   (run-hooks 'pyvenv-post-activate-hooks))
 
@@ -328,7 +338,8 @@
 to that virtualenv."
   (cond
    (pyvenv-activate
-    (when (and (not (equal pyvenv-activate pyvenv-virtual-env))
+    (when (and (not (equal (file-name-as-directory pyvenv-activate)
+                           pyvenv-virtual-env))
                (or (not pyvenv-tracking-ask-before-change)
                    (y-or-n-p (format "Switch to virtualenv %s (currently %s)"
                                      pyvenv-activate pyvenv-virtual-env))))
@@ -348,7 +359,7 @@
 
 CAREFUL! This will modify your `process-environment' and
 `exec-path'."
-  (when (pyvenv-hook-dir)
+  (when (pyvenv-virtualenvwrapper-supported)
     (with-temp-buffer
       (let ((tmpfile (make-temp-file "pyvenv-virtualenvwrapper-")))
         (unwind-protect
@@ -364,12 +375,12 @@
                                (cons hook args))
                        (cons hook args)))
               (call-process-shell-command
-               (format ". '%s' ; echo ; echo =-=-= ; python -c \"import os, json ; print(json.dumps(dict(os.environ)))\""
+               (format ". '%s' ; python -c 'import os, json; print(\"\\n=-=-=\"); print(json.dumps(dict(os.environ)))'"
                        tmpfile)
                nil t nil))
           (delete-file tmpfile)))
       (goto-char (point-min))
-      (when (and (not (re-search-forward "ImportError: No module named virtualenvwrapper" nil t))
+      (when (and (not (re-search-forward "\\(ImportError\\|ModuleNotFoundError\\): No module named '?virtualenvwrapper'?" nil t))
                  (re-search-forward "\n=-=-=\n" nil t))
         (let ((output (buffer-substring (point-min)
                                         (match-beginning 0))))
@@ -388,7 +399,8 @@
             (when (not (member env process-environment))
               (setq process-environment (cons env process-environment))))
           (when (eq (car binding) 'PATH)
-            (setq exec-path (split-string (cdr binding) ":"))))))))
+            (setq exec-path (split-string (cdr binding)
+                                          path-separator))))))))
 
 ;;;###autoload
 (defun pyvenv-restart-python ()
@@ -431,6 +443,12 @@
   (or (getenv "WORKON_HOME")
       (expand-file-name "~/.virtualenvs")))
 
+(defun pyvenv-virtualenvwrapper-supported ()
+  "Return true iff virtualenvwrapper is supported.
+
+Right now, this just checks if WORKON_HOME is set."
+  (getenv "WORKON_HOME"))
+
 ;;; Compatibility
 
 (when (not (fboundp 'file-name-base))
new file mode 100644
--- /dev/null
+++ b/elpa/s-1.11.0/s-autoloads.el
@@ -0,0 +1,15 @@
+;;; s-autoloads.el --- automatically extracted autoloads
+;;
+;;; Code:
+(add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
+
+;;;### (autoloads nil nil ("s.el") (22708 23355 286729 632000))
+
+;;;***
+
+;; Local Variables:
+;; version-control: never
+;; no-byte-compile: t
+;; no-update-autoloads: t
+;; End:
+;;; s-autoloads.el ends here
new file mode 100644
--- /dev/null
+++ b/elpa/s-1.11.0/s-pkg.el
@@ -0,0 +1,1 @@
+(define-package "s" "1.11.0" "The long lost Emacs string manipulation library." 'nil :keywords '("strings"))
new file mode 100644
--- /dev/null
+++ b/elpa/s-1.11.0/s.el
@@ -0,0 +1,618 @@
+;;; s.el --- The long lost Emacs string manipulation library.
+
+;; Copyright (C) 2012-2015 Magnar Sveen
+
+;; Author: Magnar Sveen <magnars@gmail.com>
+;; Version: 1.10.0
+;; Package-Version: 1.11.0
+;; Keywords: strings
+
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;; GNU General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; The long lost Emacs string manipulation library.
+;;
+;; See documentation on https://github.com/magnars/s.el#functions
+
+;;; Code:
+
+(require 'ucs-normalize)
+
+(defun s-trim-left (s)
+  "Remove whitespace at the beginning of S."
+  (if (string-match "\\`[ \t\n\r]+" s)
+      (replace-match "" t t s)
+    s))
+
+(defun s-trim-right (s)
+  "Remove whitespace at the end of S."
+  (if (string-match "[ \t\n\r]+\\'" s)
+      (replace-match "" t t s)
+    s))
+
+(defun s-trim (s)
+  "Remove whitespace at the beginning and end of S."
+  (s-trim-left (s-trim-right s)))
+
+(defun s-collapse-whitespace (s)
+  "Convert all adjacent whitespace characters to a single space."
+  (replace-regexp-in-string "[ \t\n\r]+" " " s))
+
+(defun s-split (separator s &optional omit-nulls)
+  "Split S into substrings bounded by matches for regexp SEPARATOR.
+If OMIT-NULLS is non-nil, zero-length substrings are omitted.
+
+This is a simple wrapper around the built-in `split-string'."
+  (split-string s separator omit-nulls))
+
+(defun s-split-up-to (separator s n &optional omit-nulls)
+  "Split S up to N times into substrings bounded by matches for regexp SEPARATOR.
+
+If OMIT-NULLS is non-nil, zero-length substrings are omitted.
+
+See also `s-split'."
+  (save-match-data
+    (let ((op 0)
+          (r nil))
+      (with-temp-buffer
+        (insert s)
+        (setq op (goto-char (point-min)))
+        (while (and (re-search-forward separator nil t)
+                    (< 0 n))
+          (let ((sub (buffer-substring-no-properties op (match-beginning 0))))
+            (unless (and omit-nulls
+                         (equal sub ""))
+              (push sub r)))
+          (setq op (goto-char (match-end 0)))
+          (setq n (1- n)))
+        (let ((sub (buffer-substring-no-properties op (point-max))))
+          (unless (and omit-nulls
+                       (equal sub ""))
+            (push sub r))))
+      (nreverse r))))
+
+(defun s-lines (s)
+  "Splits S into a list of strings on newline characters."
+  (s-split "\\(\r\n\\|[\n\r]\\)" s))
+
+(defun s-join (separator strings)
+  "Join all the strings in STRINGS with SEPARATOR in between."
+  (mapconcat 'identity strings separator))
+
+(defun s-concat (&rest strings)
+  "Join all the string arguments into one string."
+  (apply 'concat strings))
+
+(defun s-prepend (prefix s)
+  "Concatenate PREFIX and S."
+  (concat prefix s))
+
+(defun s-append (suffix s)
+  "Concatenate S and SUFFIX."
+  (concat s suffix))
+
+(defun s-repeat (num s)
+  "Make a string of S repeated NUM times."
+  (let (ss)
+    (while (> num 0)
+      (setq ss (cons s ss))
+      (setq num (1- num)))
+    (apply 'concat ss)))
+
+(defun s-chop-suffix (suffix s)
+  "Remove SUFFIX if it is at end of S."
+  (let ((pos (- (length suffix))))
+    (if (and (>= (length s) (length suffix))
+             (string= suffix (substring s pos)))
+        (substring s 0 pos)
+      s)))
+
+(defun s-chop-suffixes (suffixes s)
+  "Remove SUFFIXES one by one in order, if they are at the end of S."
+  (while suffixes
+    (setq s (s-chop-suffix (car suffixes) s))
+    (setq suffixes (cdr suffixes)))
+  s)
+
+(defun s-chop-prefix (prefix s)
+  "Remove PREFIX if it is at the start of S."
+  (let ((pos (length prefix)))
+    (if (and (>= (length s) (length prefix))
+             (string= prefix (substring s 0 pos)))
+        (substring s pos)
+      s)))
+
+(defun s-chop-prefixes (prefixes s)
+  "Remove PREFIXES one by one in order, if they are at the start of S."
+  (while prefixes
+    (setq s (s-chop-prefix (car prefixes) s))
+    (setq prefixes (cdr prefixes)))
+  s)
+
+(defun s-shared-start (s1 s2)
+  "Returns the longest prefix S1 and S2 have in common."
+  (let ((search-length (min (length s1) (length s2)))
+        (i 0))
+    (while (and (< i search-length)
+                (= (aref s1 i) (aref s2 i)))
+      (setq i (1+ i)))
+    (substring s1 0 i)))
+
+(defun s-shared-end (s1 s2)
+  "Returns the longest suffix S1 and S2 have in common."
+  (let* ((l1 (length s1))
+         (l2 (length s2))
+         (search-length (min l1 l2))
+         (i 0))
+    (while (and (< i search-length)
+                (= (aref s1 (- l1 i 1)) (aref s2 (- l2 i 1))))
+      (setq i (1+ i)))
+    ;; If I is 0, then it means that there's no common suffix between
+    ;; S1 and S2.
+    ;;
+    ;; However, since (substring s (- 0)) will return the whole
+    ;; string, `s-shared-end' should simply return the empty string
+    ;; when I is 0.
+    (if (zerop i)
+        ""
+      (substring s1 (- i)))))
+
+(defun s-chomp (s)
+  "Remove one trailing `\\n`, `\\r` or `\\r\\n` from S."
+  (s-chop-suffixes '("\n" "\r") s))
+
+(defun s-truncate (len s)
+  "If S is longer than LEN, cut it down to LEN - 3 and add ... at the end."
+  (if (> (length s) len)
+      (format "%s..." (substring s 0 (- len 3)))
+    s))
+
+(defun s-word-wrap (len s)
+  "If S is longer than LEN, wrap the words with newlines."
+  (with-temp-buffer
+    (insert s)
+    (let ((fill-column len))
+      (fill-region (point-min) (point-max)))
+    (buffer-substring-no-properties (point-min) (point-max))))
+
+(defun s-center (len s)
+  "If S is shorter than LEN, pad it with spaces so it is centered."
+  (let ((extra (max 0 (- len (length s)))))
+    (concat
+     (make-string (ceiling extra 2) ? )
+     s
+     (make-string (floor extra 2) ? ))))
+
+(defun s-pad-left (len padding s)
+  "If S is shorter than LEN, pad it with PADDING on the left."
+  (let ((extra (max 0 (- len (length s)))))
+    (concat (make-string extra (string-to-char padding))
+            s)))
+
+(defun s-pad-right (len padding s)
+  "If S is shorter than LEN, pad it with PADDING on the right."
+  (let ((extra (max 0 (- len (length s)))))
+    (concat s
+            (make-string extra (string-to-char padding)))))
+
+(defun s-left (len s)
+  "Returns up to the LEN first chars of S."
+  (if (> (length s) len)
+      (substring s 0 len)
+    s))
+
+(defun s-right (len s)
+  "Returns up to the LEN last chars of S."
+  (let ((l (length s)))
+    (if (> l len)
+        (substring s (- l len) l)
+      s)))
+
+(defun s-ends-with? (suffix s &optional ignore-case)
+  "Does S end with SUFFIX?
+
+If IGNORE-CASE is non-nil, the comparison is done without paying
+attention to case differences.
+
+Alias: `s-suffix?'"
+  (let ((start-pos (- (length s) (length suffix))))
+    (and (>= start-pos 0)
+         (eq t (compare-strings suffix nil nil
+                                s start-pos nil ignore-case)))))
+
+(defalias 's-ends-with-p 's-ends-with?)
+
+(defun s-starts-with? (prefix s &optional ignore-case)
+  "Does S start with PREFIX?
+
+If IGNORE-CASE is non-nil, the comparison is done without paying
+attention to case differences.
+
+Alias: `s-prefix?'. This is a simple wrapper around the built-in
+`string-prefix-p'."
+  (string-prefix-p prefix s ignore-case))
+
+(defalias 's-starts-with-p 's-starts-with?)
+
+(defalias 's-suffix? 's-ends-with?)
+(defalias 's-prefix? 's-starts-with?)
+(defalias 's-suffix-p 's-ends-with?)
+(defalias 's-prefix-p 's-starts-with?)
+
+(defun s--truthy? (val)
+  (not (null val)))
+
+(defun s-contains? (needle s &optional ignore-case)
+  "Does S contain NEEDLE?
+
+If IGNORE-CASE is non-nil, the comparison is done without paying
+attention to case differences."
+  (let ((case-fold-search ignore-case))
+    (s--truthy? (string-match-p (regexp-quote needle) s))))
+
+(defalias 's-contains-p 's-contains?)
+
+(defun s-equals? (s1 s2)
+  "Is S1 equal to S2?
+
+This is a simple wrapper around the built-in `string-equal'."
+  (string-equal s1 s2))
+
+(defalias 's-equals-p 's-equals?)
+
+(defun s-less? (s1 s2)
+  "Is S1 less than S2?
+
+This is a simple wrapper around the built-in `string-lessp'."
+  (string-lessp s1 s2))
+
+(defalias 's-less-p 's-less?)
+
+(defun s-matches? (regexp s &optional start)
+  "Does REGEXP match S?
+If START is non-nil the search starts at that index.
+
+This is a simple wrapper around the built-in `string-match-p'."
+  (s--truthy? (string-match-p regexp s start)))
+
+(defalias 's-matches-p 's-matches?)
+
+(defun s-blank? (s)
+  "Is S nil or the empty string?"
+  (or (null s) (string= "" s)))
+
+(defun s-present? (s)
+  "Is S anything but nil or the empty string?"
+  (not (s-blank? s)))
+
+(defun s-presence (s)
+  "Return S if it's `s-present?', otherwise return nil."
+  (and (s-present? s) s))
+
+(defun s-lowercase? (s)
+  "Are all the letters in S in lower case?"
+  (let ((case-fold-search nil))
+    (not (string-match-p "[[:upper:]]" s))))
+
+(defun s-uppercase? (s)
+  "Are all the letters in S in upper case?"
+  (let ((case-fold-search nil))
+    (not (string-match-p "[[:lower:]]" s))))
+
+(defun s-mixedcase? (s)
+  "Are there both lower case and upper case letters in S?"
+  (let ((case-fold-search nil))
+    (s--truthy?
+     (and (string-match-p "[[:lower:]]" s)
+          (string-match-p "[[:upper:]]" s)))))
+
+(defun s-capitalized? (s)
+  "In S, is the first letter upper case, and all other letters lower case?"
+  (let ((case-fold-search nil))
+    (s--truthy?
+     (string-match-p "^[[:upper:]][^[:upper:]]*$" s))))
+
+(defun s-numeric? (s)
+  "Is S a number?"
+  (s--truthy?
+   (string-match-p "^[0-9]+$" s)))
+
+(defun s-replace (old new s)
+  "Replaces OLD with NEW in S."
+  (replace-regexp-in-string (regexp-quote old) new s t t))
+
+(defun s--aget (alist key)
+  (cdr (assoc key alist)))
+
+(defun s-replace-all (replacements s)
+  "REPLACEMENTS is a list of cons-cells. Each `car` is replaced with `cdr` in S."
+  (replace-regexp-in-string (regexp-opt (mapcar 'car replacements))
+                            (lambda (it) (s--aget replacements it))
+                            s))
+
+(defun s-downcase (s)
+  "Convert S to lower case.
+
+This is a simple wrapper around the built-in `downcase'."
+  (downcase s))
+
+(defun s-upcase (s)
+  "Convert S to upper case.
+
+This is a simple wrapper around the built-in `upcase'."
+  (upcase s))
+
+(defun s-capitalize (s)
+  "Convert the first word's first character to upper case and the rest to lower case in S."
+  (concat (upcase (substring s 0 1)) (downcase (substring s 1))))
+
+(defun s-titleize (s)
+  "Convert each word's first character to upper case and the rest to lower case in S.
+
+This is a simple wrapper around the built-in `capitalize'."
+  (capitalize s))
+
+(defmacro s-with (s form &rest more)
+  "Threads S through the forms. Inserts S as the last item
+in the first form, making a list of it if it is not a list
+already. If there are more forms, inserts the first form as the
+last item in second form, etc."
+  (declare (debug (form &rest [&or (function &rest form) fboundp])))
+  (if (null more)
+      (if (listp form)
+          `(,(car form) ,@(cdr form) ,s)
+        (list form s))
+    `(s-with (s-with ,s ,form) ,@more)))
+
+(put 's-with 'lisp-indent-function 1)
+
+(defun s-index-of (needle s &optional ignore-case)
+  "Returns first index of NEEDLE in S, or nil.
+
+If IGNORE-CASE is non-nil, the comparison is done without paying
+attention to case differences."
+  (let ((case-fold-search ignore-case))
+    (string-match-p (regexp-quote needle) s)))
+
+(defun s-reverse (s)
+  "Return the reverse of S."
+  (if (multibyte-string-p s)
+      (let ((input (string-to-list s))
+            (output ()))
+        (while input
+          ;; Handle entire grapheme cluster as a single unit
+          (let ((grapheme (list (pop input))))
+            (while (memql (car input) ucs-normalize-combining-chars)
+              (push (pop input) grapheme))
+            (setq output (nconc (nreverse grapheme) output))))
+        (concat output))
+    (concat (nreverse (string-to-list s)))))
+
+(defun s-match-strings-all (regex string)
+  "Return a list of matches for REGEX in STRING.
+
+Each element itself is a list of matches, as per
+`match-string'. Multiple matches at the same position will be
+ignored after the first."
+  (let ((all-strings ())
+        (i 0))
+    (while (and (< i (length string))
+                (string-match regex string i))
+      (setq i (1+ (match-beginning 0)))
+      (let (strings
+            (num-matches (/ (length (match-data)) 2))
+            (match 0))
+        (while (/= match num-matches)
+          (push (match-string match string) strings)
+          (setq match (1+ match)))
+        (push (nreverse strings) all-strings)))
+    (nreverse all-strings)))
+
+(defun s-matched-positions-all (regexp string &optional subexp-depth)
+  "Return a list of matched positions for REGEXP in STRING.
+SUBEXP-DEPTH is 0 by default."
+  (if (null subexp-depth)
+      (setq subexp-depth 0))
+  (let ((pos 0) result)
+    (while (and (string-match regexp string pos)
+                (< pos (length string)))
+      (let ((m (match-end subexp-depth)))
+        (push (cons (match-beginning subexp-depth) (match-end subexp-depth)) result)
+        (setq pos m)))
+    (nreverse result)))
+
+(defun s-match (regexp s &optional start)
+  "When the given expression matches the string, this function returns a list
+of the whole matching string and a string for each matched subexpressions.
+If it did not match the returned value is an empty list (nil).
+
+When START is non-nil the search will start at that index."
+  (save-match-data
+    (if (string-match regexp s start)
+        (let ((match-data-list (match-data))
+              result)
+          (while match-data-list
+            (let* ((beg (car match-data-list))
+                   (end (cadr match-data-list))
+                   (subs (if (and beg end) (substring s beg end) nil)))
+              (setq result (cons subs result))
+              (setq match-data-list
+                    (cddr match-data-list))))
+          (nreverse result)))))
+
+(defun s-slice-at (regexp s)
+  "Slices S up at every index matching REGEXP."
+  (save-match-data
+    (let (i)
+      (setq i (string-match regexp s 1))
+      (if i
+          (cons (substring s 0 i)
+                (s-slice-at regexp (substring s i)))
+        (list s)))))
+
+(defun s-split-words (s)
+  "Split S into list of words."
+  (s-split
+   "[^[:word:]0-9]+"
+   (let ((case-fold-search nil))
+     (replace-regexp-in-string
+      "\\([[:lower:]]\\)\\([[:upper:]]\\)" "\\1 \\2"
+      (replace-regexp-in-string "\\([[:upper:]]\\)\\([[:upper:]][0-9[:lower:]]\\)" "\\1 \\2" s)))
+   t))
+
+(defun s--mapcar-head (fn-head fn-rest list)
+  "Like MAPCAR, but applies a different function to the first element."
+  (if list
+      (cons (funcall fn-head (car list)) (mapcar fn-rest (cdr list)))))
+
+(defun s-lower-camel-case (s)
+  "Convert S to lowerCamelCase."
+  (s-join "" (s--mapcar-head 'downcase 'capitalize (s-split-words s))))
+
+(defun s-upper-camel-case (s)
+  "Convert S to UpperCamelCase."
+  (s-join "" (mapcar 'capitalize (s-split-words s))))
+
+(defun s-snake-case (s)
+  "Convert S to snake_case."
+  (s-join "_" (mapcar 'downcase (s-split-words s))))
+
+(defun s-dashed-words (s)
+  "Convert S to dashed-words."
+  (s-join "-" (mapcar 'downcase (s-split-words s))))
+
+(defun s-capitalized-words (s)
+  "Convert S to Capitalized words."
+  (let ((words (s-split-words s)))
+    (s-join " " (cons (capitalize (car words)) (mapcar 'downcase (cdr words))))))
+
+(defun s-titleized-words (s)
+  "Convert S to Titleized Words."
+  (s-join " " (mapcar 's-titleize (s-split-words s))))
+
+(defun s-word-initials (s)
+  "Convert S to its initials."
+  (s-join "" (mapcar (lambda (ss) (substring ss 0 1))
+                     (s-split-words s))))
+
+;; Errors for s-format
+(progn
+  (put 's-format-resolve
+       'error-conditions
+       '(error s-format s-format-resolve))
+  (put 's-format-resolve
+       'error-message
+       "Cannot resolve a template to values"))
+
+(defun s-format (template replacer &optional extra)
+  "Format TEMPLATE with the function REPLACER.
+
+REPLACER takes an argument of the format variable and optionally
+an extra argument which is the EXTRA value from the call to
+`s-format'.
+
+Several standard `s-format' helper functions are recognized and
+adapted for this:
+
+    (s-format \"${name}\" 'gethash hash-table)
+    (s-format \"${name}\" 'aget alist)
+    (s-format \"$0\" 'elt sequence)
+
+The REPLACER function may be used to do any other kind of
+transformation."
+  (let ((saved-match-data (match-data)))
+    (unwind-protect
+        (replace-regexp-in-string
+         "\\$\\({\\([^}]+\\)}\\|[0-9]+\\)"
+         (lambda (md)
+           (let ((var
+                  (let ((m (match-string 2 md)))
+                    (if m m
+                      (string-to-number (match-string 1 md)))))
+                 (replacer-match-data (match-data)))
+             (unwind-protect
+                 (let ((v
+                        (cond
+                         ((eq replacer 'gethash)
+                          (funcall replacer var extra))
+                         ((eq replacer 'aget)
+                          (funcall 's--aget extra var))
+                         ((eq replacer 'elt)
+                          (funcall replacer extra var))
+                         (t
+                          (set-match-data saved-match-data)
+                          (if extra
+                              (funcall replacer var extra)
+                            (funcall replacer var))))))
+                   (if v v (signal 's-format-resolve md)))
+               (set-match-data replacer-match-data)))) template
+               ;; Need literal to make sure it works
+               t t)
+      (set-match-data saved-match-data))))
+
+(defvar s-lex-value-as-lisp nil
+  "If `t' interpolate lisp values as lisp.
+
+`s-lex-format' inserts values with (format \"%S\").")
+
+(defun s-lex-fmt|expand (fmt)
+  "Expand FMT into lisp."
+  (list 's-format fmt (quote 'aget)
+        (append '(list)
+                (mapcar
+                 (lambda (matches)
+                   (list
+                    'cons
+                    (cadr matches)
+                    `(format
+                      (if s-lex-value-as-lisp "%S" "%s")
+                      ,(intern (cadr matches)))))
+                 (s-match-strings-all "${\\([^}]+\\)}" fmt)))))
+
+(defmacro s-lex-format (format-str)
+  "`s-format` with the current environment.
+
+FORMAT-STR may use the `s-format' variable reference to refer to
+any variable:
+
+ (let ((x 1))
+   (s-lex-format \"x is: ${x}\"))
+
+The values of the variables are interpolated with \"%s\" unless
+the variable `s-lex-value-as-lisp' is `t' and then they are
+interpolated with \"%S\"."
+  (declare (debug (form)))
+  (s-lex-fmt|expand format-str))
+
+(defun s-count-matches (regexp s &optional start end)
+  "Count occurrences of `regexp' in `s'.
+
+`start', inclusive, and `end', exclusive, delimit the part of `s'
+to match. "
+  (with-temp-buffer
+    (insert s)
+    (goto-char (point-min))
+    (count-matches regexp (or start 1) (or end (point-max)))))
+
+(defun s-wrap (s prefix &optional suffix)
+  "Wrap string S with PREFIX and optionally SUFFIX.
+
+Return string S with PREFIX prepended.  If SUFFIX is present, it
+is appended, otherwise PREFIX is used as both prefix and
+suffix."
+  (concat prefix s (or suffix prefix)))
+
+(provide 's)
+;;; s.el ends here
rename from elpa/yasnippet-0.9.1.signed
rename to elpa/yasnippet-0.11.0.signed
--- a/elpa/yasnippet-0.9.1.signed
+++ b/elpa/yasnippet-0.11.0.signed
@@ -1,1 +1,1 @@
-Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org> (trust undefined) created at 2016-04-04T05:05:02-0400 using DSA
\ No newline at end of file
+Good signature from 474F05837FBDEF9B GNU ELPA Signing Agent <elpasign@elpa.gnu.org> (trust undefined) created at 2016-10-28T05:05:02-0400 using DSA
\ No newline at end of file
rename from elpa/yasnippet-0.9.1/.gitmodules
rename to elpa/yasnippet-0.11.0/.gitmodules
rename from elpa/yasnippet-0.9.1/.travis.yml
rename to elpa/yasnippet-0.11.0/.travis.yml
--- a/elpa/yasnippet-0.9.1/.travis.yml
+++ b/elpa/yasnippet-0.11.0/.travis.yml
@@ -1,24 +1,35 @@
-language: emacs
+language: generic
+sudo: false
+git:
+  submodules: false
 
 env:
-  - "EMACS=emacs23"
-  - "EMACS=emacs24"
+  - EMACS_VERSION=23.4
+  - EMACS_VERSION=24.3
+  - EMACS_VERSION=24.5
+  - EMACS_VERSION=25-prerelease
 
 install:
-  - if [ "$EMACS" = "emacs23" ]; then
-        sudo apt-get -qq update &&
-        sudo apt-get -qq -f install &&
-        sudo apt-get -qq install emacs23-nox &&
+  - curl -LO https://github.com/npostavs/emacs-travis/releases/download/bins/emacs-bin-${EMACS_VERSION}.tar.gz
+  - tar -xaf emacs-bin-${EMACS_VERSION}.tar.gz -C /
+  # Configure $PATH: Emacs installed to /tmp/emacs
+  - export PATH=/tmp/emacs/bin:${PATH}
+  - if ! emacs -Q --batch --eval "(require 'cl-lib)" ; then
+        curl -Lo cl-lib.el http://elpa.gnu.org/packages/cl-lib-0.5.el ;
+        export warnings="'(not cl-functions)" ;
+    fi
+  - if ! emacs -Q --batch --eval "(require 'ert)" ; then
         curl -LO https://raw.githubusercontent.com/ohler/ert/c619b56c5bc6a866e33787489545b87d79973205/lisp/emacs-lisp/ert.el &&
-        curl -LO https://raw.githubusercontent.com/ohler/ert/c619b56c5bc6a866e33787489545b87d79973205/lisp/emacs-lisp/ert-x.el &&
-        curl -Lo cl-lib.el http://elpa.gnu.org/packages/cl-lib-0.5.el;
+        curl -LO https://raw.githubusercontent.com/ohler/ert/c619b56c5bc6a866e33787489545b87d79973205/lisp/emacs-lisp/ert-x.el ;
     fi
-  - if [ "$EMACS" = "emacs24" ]; then
-        sudo add-apt-repository -y ppa:cassou/emacs &&
-        sudo apt-get -qq update &&
-        sudo apt-get -qq -f install &&
-        sudo apt-get -qq install emacs24-nox;
-    fi
+  - emacs --version
 
 script:
-  - rake compile; rake tests
+  - rake compile
+  - rake tests
+
+notifications:
+  email:
+    # Default is change, but that includes a new branch's 1st success.
+    on_success: never
+    on_failure: always # The default.
rename from elpa/yasnippet-0.9.1/CONTRIBUTING.md
rename to elpa/yasnippet-0.11.0/CONTRIBUTING.md
--- a/elpa/yasnippet-0.9.1/CONTRIBUTING.md
+++ b/elpa/yasnippet-0.11.0/CONTRIBUTING.md
@@ -26,4 +26,4 @@
 For trivial changes, a message consisting of just the changelog entry
 (the `* foo.el ...` part) is fine.
 
-[bugnote]: https://github.com/capitaomorte/yasnippet#important-note-regarding-bug-reporting
+[bugnote]: https://github.com/joaotavora/yasnippet#important-note-regarding-bug-reporting
rename from elpa/yasnippet-0.9.1/ChangeLog
rename to elpa/yasnippet-0.11.0/ChangeLog
--- a/elpa/yasnippet-0.9.1/ChangeLog
+++ b/elpa/yasnippet-0.11.0/ChangeLog
@@ -1,3 +1,46 @@
+2016-10-26  Noam Postavsky  <npostavs@users.sourceforge.net>
+
+	packages/yasnippet: Merge external (v0.11.0)
+
+2016-07-11  Paul Eggert	 <eggert@cs.ucla.edu>
+
+	Fix some quoting problems in doc strings
+
+	Most of these are minor issues involving, e.g., quoting `like this' 
+	instead of 'like this'.	 A few involve escaping ` and ' with a preceding
+	\= when the characters should not be turned into curved single quotes.
+
+2016-06-22  Noam Postavsky  <npostavs@users.sourceforge.net>
+
+	* packages/yasnippet: Don't backport new vars
+
+	* packages/yasnippet/yasnippet.el (yas--backported-syms): Don't backport 
+	yas-dont-activate-functions, since the only use of yas--backported-syms 
+	is to accomodate .emacs files that reference the old yas/foo style 
+	names.	A newer variable such as yas-dont-activate-functions was never 
+	accessible as yas/dont-activate-functions, so there's no need to add it 
+	now.
+
+2016-06-22  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+	* packages/yasnippet: Fix some compilation warnings
+
+	* packages/yasnippet/yasnippet-tests.el (complicated-yas-key-syntaxes): 
+	Avoid looking-back.
+
+	* packages/yasnippet/yasnippet.el (yas--font-lock-keywords): Escape $,
+	even if first in the regexp.
+	(yas--indent): Remove unused var `end'.
+	(yas--indent-parse-create): Remove unused arg `snippet'.  Update caller.
+
+2016-06-11  Noam Postavsky  <npostavs@users.sourceforge.net>
+
+	packages/yasnippet: pull from external (0.10.0)
+
+2016-04-08  Noam Postavsky  <npostavs@gmail.com>
+
+	packages/yasnippet: subtree pull from external
+
 2016-04-03  Noam Postavsky  <npostavs@users.sourceforge.net>
 
 	packages/yasnippet: subtree pull from external
rename from elpa/yasnippet-0.9.1/NEWS
rename to elpa/yasnippet-0.11.0/NEWS
--- a/elpa/yasnippet-0.9.1/NEWS
+++ b/elpa/yasnippet-0.11.0/NEWS
@@ -4,7 +4,114 @@
 See the end of the file for license conditions.
 
 
-* 0.9.1 (est. March 2016)
+
+* 0.11.0 (Oct 26, 2016)
+** Changes and New Features
+
+*** Modifying buffer in backquoted expressions is deprecated!
+Backquoted expressions should only return a string that will be
+inserted.  Snippets which modify the buffer as a side-effect will now
+trigger a warning.
+
+*** The verbosity levels for messages have been adjusted.
+While the default verbosity level was increased by 1 (it was only
+lower before due to a bug), several messages now only print at the
+level 4, so the overall effect should be less messages by default.
+
+*** Saving and loading snippets has been streamlined.  Saving the
+snippet to a file will now automatically load it.  Additionally, the
+buffer will be renamed from "*new snippet*" to whatever the snippet is
+named.  See also Github #718, #733, and #734.
+
+*** `yas-escape-text' no longer signals an error when given nil.
+
+*** `yas-describe-tables' is split into simpler commands.
+**** `yas-describe-tables' takes a prefix arg to show non-active tables.
+**** New command `yas-describe-tables-by-namehash' shows table by namehash.
+
+*** Use the region contents as the snippet body of new snippets.
+
+*** The dependency on `cl' is removed.
+Yasnippet now only requires `cl-lib'.
+
+** Fixed Bugs
+
+*** Fix field navigation (tabbing) in the backwards direction.
+See Github #722
+
+*** Add support for deprecated yas/ symbols in `yas-define-menu'.
+It was left out by accident.  This support is conditional on
+`yas-alias-to-yas/prefix-p', just like other obsolete yas/ bindings.
+
+*** Fix overriding of snippet by a new snippet with same uuid.
+See Github #714.
+
+*** Fix handling of snippets with 2 mirros on the same line.
+See Github #712.
+
+
+* 0.10.0 (June 11th, 2016)
+
+** Changes and New Features
+
+*** Yasnippet now prints far fewer message by default.
+See Github #682, #683.
+
+*** `yas-wrap-around-region' can be set to a register.
+The register's content will be used.  This is like the old `cua'
+option, but can be used with any register and doesn't require enabling
+cua-mode.
+
+*** Clearing of snippet fields is now decided by the command's effect.
+The `delete-selection' property is no longer consulted.  See Github #662.
+
+*** Empty lines in snippet expansion are no longer indented.
+See Github #679.
+
+*** All lines from mirror output are now indented.
+See Github #665.
+
+*** New variable yas-alias-to-yas/prefix-p
+See Github #696, #699.
+
+*** New function yas-next-field-will-exit-p
+See Github #561.
+
+*** `snippet-mode' is now autoloaded.
+
+** Fixed Bugs
+
+*** Fix incompatibility with Emacs 25 and haskell-mode.
+This should also help other modes with a non-nil syntax-propertize
+function.  See Github #687.
+
+*** Text property changes no longer disable snippets.
+This prevents cc-mode based modes from causing premature exit of
+snippets.  See Github #677.
+
+*** Fields are now transformed correctly after `yas-next-field'.
+See Github #381.
+
+*** The $> construct is now escaped correctly, and documented.
+See Github #640.
+
+*** Avoid corruption of snippet content when loading from files.
+See Github #707 and Emacs bug #23659.
+
+*** `yas-wrap-around-region' now works for snippets with fields
+farther down the buffer than $0.  See Github #636.
+
+*** The active region is deleted when using `yas-expand'.
+This makes it consistent with `yas-insert-snippet'.  See Github #523.
+
+*** Fix mirror+autofill interaction.
+See Github #643 and http://emacs.stackexchange.com/q/19206/5296.
+
+*** Snippet insertion no longer adds irrelevant strings to kill ring.
+See Github #675.
+
+
+* 0.9.1 (April 3rd, 2016)
 
 ** Changes and New Features
 
@@ -53,7 +160,7 @@
 
 *** Documentation rewritten in org-mode and updated.
 A tremendous effort by Noam Postavsky.  Hopefully easier to maintain
-and navigate.  Available at <http://capitaomorte.github.io/yasnippet>.
+and navigate.  Available at <http://joaotavora.github.io/yasnippet>.
 
 *** Snippets are now maintained in their own repo.
 Snippets live in Andrea Crotti's
@@ -61,7 +168,7 @@
 for more details.
 
 *** Textmate snippet importer moved to separate `yasmate' repo.
-URL is <https://github.com/capitaomorte/yasmate>.  See README.md for
+URL is <https://github.com/joaotavora/yasmate>.  See README.md for
 more details.
 
 *** `yas-snippet-dirs' now allows symbols as aliases to directories.
rename from elpa/yasnippet-0.9.1/README
rename to elpa/yasnippet-0.11.0/README
rename from elpa/yasnippet-0.9.1/README.mdown
rename to elpa/yasnippet-0.11.0/README.mdown
--- a/elpa/yasnippet-0.9.1/README.mdown
+++ b/elpa/yasnippet-0.11.0/README.mdown
@@ -1,4 +1,4 @@
-[![Build Status](https://travis-ci.org/capitaomorte/yasnippet.png)](https://travis-ci.org/capitaomorte/yasnippet)
+[![Build Status](https://travis-ci.org/joaotavora/yasnippet.png)](https://travis-ci.org/joaotavora/yasnippet)
 
 # Intro
 
@@ -20,7 +20,7 @@
 Clone this repository somewhere
 
     $ cd ~/.emacs.d/plugins
-    $ git clone --recursive https://github.com/capitaomorte/yasnippet
+    $ git clone --recursive https://github.com/joaotavora/yasnippet
 
 Add the following in your `.emacs` file:
 
@@ -117,14 +117,14 @@
 To do this, we need to rule out interference from external factors
 like other Emacs extensions or your own customisations.
 
-Here's an example report that "sandboxes" an Emacs session just for 
+Here's an example report that "sandboxes" an Emacs session just for
 reproducing a bug.
 
 ```
 $ emacs --version
 Emacs 24.3
 $ cd /tmp/
-$ git clone https://github.com/capitaomorte/yasnippet.git yasnippet-bug
+$ git clone https://github.com/joaotavora/yasnippet.git yasnippet-bug
 $ cd yasnippet-bug
 $ git log -1 --oneline
 6053db0 Closes #527: Unbreak case where yas-fallback-behaviour is a list
@@ -138,11 +138,11 @@
 When loading yasnippet I see "Error: failed to frobnicate"!
 ```
 
-Using `emacs -Q` or temporarily moving your `.emacs` init file to the side 
+Using `emacs -Q` or temporarily moving your `.emacs` init file to the side
 is another way to achieve good reproducibility.
 
 Here's a
-[another example](https://github.com/capitaomorte/yasnippet/issues/318)
+[another example](https://github.com/joaotavora/yasnippet/issues/318)
 of a bug report. It has everything needed for a successful analysis
 and speedy resolution.
 
@@ -161,11 +161,11 @@
 
 Finally, thank you very much for using YASnippet!
 
-[docs]: http://capitaomorte.github.com/yasnippet/
-[issues]: https://github.com/capitaomorte/yasnippet/issues
+[docs]: http://joaotavora.github.io/yasnippet/
+[issues]: https://github.com/joaotavora/yasnippet/issues
 [googlecode tracker]: http://code.google.com/p/yasnippet/issues/list
 [forum]: http://groups.google.com/group/smart-snippet
 [melpa]: http://melpa.milkbox.net/
-[yasmate]: http://github.com/capitaomorte/yasmate
+[yasmate]: http://github.com/joaotavora/yasmate
 [textmate-to-yas.el]: https://github.com/mattfidler/textmate-to-yas.el
 [yasnippet-snippets]: http://github.com/AndreaCrotti/yasnippet-snippets
rename from elpa/yasnippet-0.9.1/Rakefile
rename to elpa/yasnippet-0.11.0/Rakefile
--- a/elpa/yasnippet-0.9.1/Rakefile
+++ b/elpa/yasnippet-0.11.0/Rakefile
@@ -45,8 +45,12 @@
 end
 
 desc "Generate document"
-task :doc do
-  sh "#{$EMACS} -Q -L . --batch -l doc/yas-doc-helper.el" +
+task :doc, [:htmlize] do |t, args|
+  load_path = '-L .'
+  if args[:htmlize]
+    load_path += " -L #{args[:htmlize]}"
+  end
+  sh "#{$EMACS} -Q #{load_path} --batch -l doc/yas-doc-helper.el" +
     " -f yas--generate-html-batch"
 end
 
@@ -94,7 +98,12 @@
 desc "Compile yasnippet.el into yasnippet.elc"
 
 rule '.elc' => '.el' do |t|
-  sh "#{$EMACS} --batch -L . --eval \"(byte-compile-file \\\"#{t.source}\\\")\""
+  set_warnings = ""
+  if ENV['warnings']
+    set_warnings = " --eval \"(setq byte-compile-warnings #{ENV['warnings']})\""
+  end
+  sh "#{$EMACS} --batch -L . --eval \"(setq byte-compile-error-on-warn t)\"" +
+     "#{set_warnings} -f batch-byte-compile #{t.source}"
 end
 task :compile => FileList["yasnippet.el"].ext('elc')
 
new file mode 100644
rename from elpa/yasnippet-0.9.1/doc/faq.org
rename to elpa/yasnippet-0.11.0/doc/faq.org
rename from elpa/yasnippet-0.9.1/doc/images/bg-content-left.png
rename to elpa/yasnippet-0.11.0/doc/images/bg-content-left.png
rename from elpa/yasnippet-0.9.1/doc/images/bg-content-right.png
rename to elpa/yasnippet-0.11.0/doc/images/bg-content-right.png
rename from elpa/yasnippet-0.9.1/doc/images/bg-content.png
rename to elpa/yasnippet-0.11.0/doc/images/bg-content.png
rename from elpa/yasnippet-0.9.1/doc/images/bg-navigation-item-hover.png
rename to elpa/yasnippet-0.11.0/doc/images/bg-navigation-item-hover.png
rename from elpa/yasnippet-0.9.1/doc/images/bg-navigation-item.png
rename to elpa/yasnippet-0.11.0/doc/images/bg-navigation-item.png
rename from elpa/yasnippet-0.9.1/doc/images/bg-navigation.png
rename to elpa/yasnippet-0.11.0/doc/images/bg-navigation.png
rename from elpa/yasnippet-0.9.1/doc/images/body.png
rename to elpa/yasnippet-0.11.0/doc/images/body.png
rename from elpa/yasnippet-0.9.1/doc/images/customization-group.png
rename to elpa/yasnippet-0.11.0/doc/images/customization-group.png
rename from elpa/yasnippet-0.9.1/doc/images/dropdown-menu.png
rename to elpa/yasnippet-0.11.0/doc/images/dropdown-menu.png
rename from elpa/yasnippet-0.9.1/doc/images/external.png
rename to elpa/yasnippet-0.11.0/doc/images/external.png
rename from elpa/yasnippet-0.9.1/doc/images/ido-menu.png
rename to elpa/yasnippet-0.11.0/doc/images/ido-menu.png
rename from elpa/yasnippet-0.9.1/doc/images/menu-1.png
rename to elpa/yasnippet-0.11.0/doc/images/menu-1.png
rename from elpa/yasnippet-0.9.1/doc/images/menu-2.png
rename to elpa/yasnippet-0.11.0/doc/images/menu-2.png
rename from elpa/yasnippet-0.9.1/doc/images/menu-groups.png
rename to elpa/yasnippet-0.11.0/doc/images/menu-groups.png
rename from elpa/yasnippet-0.9.1/doc/images/menu-parent.png
rename to elpa/yasnippet-0.11.0/doc/images/menu-parent.png
rename from elpa/yasnippet-0.9.1/doc/images/minor-mode-indicator.png
rename to elpa/yasnippet-0.11.0/doc/images/minor-mode-indicator.png
rename from elpa/yasnippet-0.9.1/doc/images/x-menu.png
rename to elpa/yasnippet-0.11.0/doc/images/x-menu.png
rename from elpa/yasnippet-0.9.1/doc/index.org
rename to elpa/yasnippet-0.11.0/doc/index.org
--- a/elpa/yasnippet-0.9.1/doc/index.org
+++ b/elpa/yasnippet-0.11.0/doc/index.org
@@ -3,7 +3,7 @@
 
 The YASnippet documentation has been split into separate parts:
 
-0. [[https://github.com/capitaomorte/yasnippet/blob/master/README.mdown][README]]
+0. [[https://github.com/joaotavora/yasnippet/blob/master/README.mdown][README]]
 
    Contains an introduction, installation instructions and other important
    notes.
rename from elpa/yasnippet-0.9.1/doc/nav-menu.html.inc
rename to elpa/yasnippet-0.11.0/doc/nav-menu.html.inc
--- a/elpa/yasnippet-0.9.1/doc/nav-menu.html.inc
+++ b/elpa/yasnippet-0.11.0/doc/nav-menu.html.inc
@@ -1,7 +1,7 @@
 <nav>
   <ul class="center">
     <li> <a href="index.html">Overview</a>
-    <li> <a href="https://github.com/capitaomorte/yasnippet/blob/master/README.mdown">
+    <li> <a href="https://github.com/joaotavora/yasnippet/blob/master/README.mdown">
         Intro and Tutorial</a>
     <li class="center">Snippet
       <ul>
rename from elpa/yasnippet-0.9.1/doc/org-setup.inc
rename to elpa/yasnippet-0.11.0/doc/org-setup.inc
rename from elpa/yasnippet-0.9.1/doc/snippet-development.org
rename to elpa/yasnippet-0.11.0/doc/snippet-development.org
--- a/elpa/yasnippet-0.9.1/doc/snippet-development.org
+++ b/elpa/yasnippet-0.11.0/doc/snippet-development.org
@@ -8,52 +8,48 @@
 
 There are some ways you can quickly find a snippet file or create a new one:
 
--  =M-x yas-new-snippet=
+-  =M-x yas-new-snippet=, key bindind: =C-c & C-n=
 
-   Creates a new buffer with a template for making a new snippet.
-   The buffer is in =snippet-mode= (see below). When you are done
-   editing the new snippet, use =C-c C-c= to save it. This will
-   prompt for a directory two steps: first, the snippet table
-   (with a default based on the major mode you started in), and then
-   then snippet collection directory (defaults to the first directory
-   in =yas-snippet-dirs=. (See [[file:snippet-organization.org][Organizing Snippets]]
-   for more detail on how snippets are organized.)
+   Creates a new buffer with a template for making a new snippet.  The
+   buffer is in =snippet-mode= (see [[snippet-mode][below]]).  When you are done editing
+   the new snippet, use [[yas-load-snippet-buffer-and-close][=C-c C-c=]] to save it.
 
--  =M-x yas-find-snippets=
-
-   Lets you find the snippet file in the directory the snippet was
-   loaded from (if it exists) like =find-file-other-window=. The
-   directory searching logic is similar to =M-x yas-new-snippet=.
-
--  =M-x yas-visit-snippet-file=
+-  =M-x yas-visit-snippet-file=, key binding: =C-c & C-v=
 
    Prompts you for possible snippet expansions like
    [[sym:yas-insert-snippet][=yas-insert-snippet=]], but instead of expanding it, takes you directly
    to the snippet definition's file, if it exists.
 
-Once you find this file it will be set to =snippet-mode= (see ahead) and
-you can start editing your snippet.
+Once you find this file it will be set to =snippet-mode= (see [[snippet-mode][ahead]])
+and you can start editing your snippet.
 
-** Using the =snippet-mode= major mode
+** Using the =snippet-mode= major mode <<snippet-mode>>
 
 There is a major mode =snippet-mode= to edit snippets. You can set the
 buffer to this mode with =M-x snippet-mode=. It provides reasonably
 useful syntax highlighting.
 
-Two commands are defined in this mode:
+Three commands are defined in this mode:
+
+-  =M-x yas-load-snippet-buffer=, key binding: =C-c C-l=
 
--  =M-x yas-load-snippet-buffer=
+   Prompts for a snippet table (with a default based on snippet's
+   major mode) and loads the snippet currently being edited.
+
+-  =M-x yas-load-snippet-buffer-and-close=, key binding: =C-c C-c=
+   <<yas-load-snippet-buffer-and-close>>
 
-     When editing a snippet, this loads the snippet into the correct
-     mode and menu. Bound to =C-c C-c= by default while in
-     =snippet-mode=.
+   Like =yas-load-snippet-buffer=, but also saves the snippet and
+   calls =quit-window=.  The destination is decided based on the
+   chosen snippet table and snippet collection directly (defaulting to
+   the first directory in =yas-snippet-dirs= (see [[file:snippet-organization.org][Organizing Snippets]]
+   for more detail on how snippets are organized).
 
--  =M-x yas-tryout-snippet=
+-  =M-x yas-tryout-snippet=, key binding: =C-c C-t=
 
-     When editing a snippet, this opens a new empty buffer, sets it to
-     the appropriate major mode and inserts the snippet there, so you
-     can see what it looks like. This is bound to =C-c C-t= while in
-     =snippet-mode=.
+   When editing a snippet, this opens a new empty buffer, sets it to
+   the appropriate major mode and inserts the snippet there, so you
+   can see what it looks like.
 
 There are also /snippets for writing snippets/: =vars=, =$f= and =$m=
 :-).
@@ -194,7 +190,7 @@
 This is optional and has no effect whatsoever on snippet functionality,
 but it looks nice.
 
-* <<Template syntax>>
+* Template Syntax
 
 The syntax of the snippet template is simple but powerful, very similar
 to TextMate's.
@@ -213,7 +209,7 @@
 being expanded. The evaluation is done in the same buffer as the
 snippet being expanded.
 
-Here's an example for c-mode` to calculate the header file guard
+Here's an example for c-mode to calculate the header file guard
 dynamically:
 
 #+BEGIN_SRC snippet
@@ -239,6 +235,27 @@
 Alternatively, you can also customize the variable
 [[sym:yas-wrap-around-region][=yas-wrap-around-region=]] to =t= which will do this automatically.
 
+*** Note: backquote expressions should not modify the buffer
+
+Please note that the lisp forms in backquotes should *not* modify the
+buffer, doing so will trigger a warning.  For example, instead of
+doing
+
+#+BEGIN_SRC snippet
+  Timestamp: `(insert (current-time-string))`
+#+END_SRC
+
+do this:
+#+BEGIN_SRC snippet
+  Timestamp: `(current-time-string)`
+#+END_SRC
+
+The warning may be suppressed with the following code in your init file:
+#+BEGIN_SRC emacs-lisp
+  (add-to-list 'warning-suppress-types '(yasnippet backquote-change))
+#+END_SRC
+
+
 ** Tab stop fields
 
 Tab stops are fields that you can navigate back and forth by =TAB= and
@@ -262,10 +279,10 @@
 
 They acts as the default value for a tab stop. But when you firstly
 type at a tab stop, the default value will be replaced by your typing.
-The number can be omitted if you don't want to create [[mirrors]] or
-[[transformations]] for this field.
+The number can be omitted if you don't want to create [[mirrors-fields][mirrors]] or
+[[mirror-transformations][transformations]] for this field.
 
-** <<Mirrors>>
+** Mirrors <<mirrors-fields>>
 
 We refer the tab stops with placeholders as a /field/. A field can have
 mirrors. Its mirrors will get updated when you change the text of a
@@ -285,7 +302,7 @@
 none of the tab stops has an initial value, the first one is selected as
 the field and others mirrors.
 
-** Mirrors with <<transformations>>
+** Mirrors with transformations <<mirror-transformations>>
 
 If the value of an =${n:=-construct starts with and contains =$(=,
 then it is interpreted as a mirror for field =n= with a
@@ -422,3 +439,9 @@
 By the way, =C-d= will only clear the field if you cursor is at the
 beginning of the field /and/ it hasn't been changed yet. Otherwise, it
 performs the normal Emacs =delete-char= command.
+
+** Indentation markers
+
+If [[sym:yas-indent-line][=yas-indent-line=]] is *not* set to '=auto=, it's still possible to
+indent specific lines by adding an indentation marker, =$>=, somewhere
+on the line.
rename from elpa/yasnippet-0.9.1/doc/snippet-expansion.org
rename to elpa/yasnippet-0.11.0/doc/snippet-expansion.org
--- a/elpa/yasnippet-0.9.1/doc/snippet-expansion.org
+++ b/elpa/yasnippet-0.11.0/doc/snippet-expansion.org
@@ -83,6 +83,19 @@
 The prompting methods used are again controlled by
 [[sym:yas-prompt-functions][=yas-prompt-functions=]].
 
+*** Inserting region or register contents into snippet
+
+It's often useful to inject already written text in the middle of a
+snippet.  The variable [[sym:yas-wrap-around-region][=yas-wrap-around-region=]] when to t substitute
+the region contents into the =$0= placeholder of a snippet expanded by
+[[#yas-insert-snippet][=yas-insert-snippet=]].  Setting it to a character value (e.g. =?0=)
+will insert the contents of corresponding register.
+
+Older (versions 0.9.1 and below) of Yasnippet, supported a setting of
+=cua= that is equivalent to =?0= but only worked with =cua-mode=
+turned on.  This setting is still supported for backwards
+compatibility, but is now entirely equivalent to =?0=.
+
 ** Snippet keybinding
 
 See the section of the =# binding:= directive in
@@ -180,11 +193,11 @@
 
 If you use the =# condition := directive (see
 [[./snippet-development.org][Writing Snippets]]) you could just specify
-the condition for =if= to be =(not (python-in-string/comment))=. But how
+the condition for =if= to be =(not (python-syntax-comment-or-string-p))=. But how
 about =while=, =for=, etc. ? Writing the same condition for all the
 snippets is just boring. So has a buffer local variable
 [[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]]. You can set this variable to
-=(not (python-in-string/comment))= in =python-mode-hook=.
+=(not (python-syntax-comment-or-string-p))= in =python-mode-hook=.
 
 Then, what if you really want some particular snippet to expand even
 inside a comment? Set [[sym:yas-buffer-local-condition][=yas-buffer-local-condition=]] like this
@@ -193,7 +206,7 @@
   (add-hook 'python-mode-hook
             (lambda ()
               (setq yas-buffer-local-condition
-                    '(if (python-in-string/comment)
+                    '(if (python-syntax-comment-or-string-p)
                          '(require-snippet-condition . force-in-comment)
                        t))))
 #+END_SRC
rename from elpa/yasnippet-0.9.1/doc/snippet-menu.org
rename to elpa/yasnippet-0.11.0/doc/snippet-menu.org
rename from elpa/yasnippet-0.9.1/doc/snippet-organization.org
rename to elpa/yasnippet-0.11.0/doc/snippet-organization.org
--- a/elpa/yasnippet-0.9.1/doc/snippet-organization.org
+++ b/elpa/yasnippet-0.11.0/doc/snippet-organization.org
@@ -108,9 +108,11 @@
    Yet another way to create a nice snippet menu is to write into
    =.yas-make-groups= a menu definition. TODO
 
-* TODO The =.yas-setup.el= file
+* The =.yas-setup.el= file
 
-** TODO
+  If there is file named =.yas-setup.el= in a mode's snippet
+  subdirectory, it is loaded along with the snippets.  Utility
+  functions used by the snippets can be put here.
 
 * The =.yas-compiled-snippet.el= file
 
@@ -127,5 +129,3 @@
 
   A =.yas-skip= file in a mode's snippet subdirectory tells YASnippet
   not to load snippets from there.
-
-** TODO
rename from elpa/yasnippet-0.9.1/doc/snippet-reference.org
rename to elpa/yasnippet-0.11.0/doc/snippet-reference.org
rename from elpa/yasnippet-0.9.1/doc/stylesheets/manual.css
rename to elpa/yasnippet-0.11.0/doc/stylesheets/manual.css
--- a/elpa/yasnippet-0.9.1/doc/stylesheets/manual.css
+++ b/elpa/yasnippet-0.11.0/doc/stylesheets/manual.css
@@ -24,3 +24,36 @@
     margin-left: 5%;
     margin-right: 10%;
 }
+
+/* Styles for htmlize.el fontification.  */
+
+.org-comment        { color: #005000; }    /* font-lock-comment-face */
+.org-keyword        { font-weight: bold; } /* font-lock-keyword-face */
+.org-string         { color: #8b0000; }    /* font-lock-string-face */
+.org-warning        { color: #ff8c00;
+                      font-weight: bold; } /* warning */
+.org-warning-1      { color: #ff0000;
+                      font-weight: bold; } /* font-lock-warning-face */
+.org-preprocessor   { color: #483d8b; }    /* font-lock-preprocessor-face */
+.org-constant       { color: #008b8b; }    /* font-lock-constant-face */
+.org-function-name  { color: #0000ff; }    /* font-lock-function-name-face */
+.org-type           { color: #228b22; }    /* font-lock-type-face */
+.org-variable-name  { color: #a0522d; }    /* font-lock-variable-name-face */
+
+.org-rst-adornment  { color: #a020f0; }            /* rst-adornment */
+.org-rst-block      { color: #a020f0; }            /* rst-block */
+.org-rst-comment    { color: #b22222; }            /* rst-comment */
+.org-rst-definition { color: #0000ff; }            /* rst-definition */
+.org-rst-directive  { color: #483d8b; }            /* rst-directive */
+.org-rst-emphasis1  { font-style: italic; }        /* rst-emphasis1 */
+.org-rst-emphasis2  { font-weight: bold; }         /* rst-emphasis2 */
+.org-rst-external   { color: #228b22; }            /* rst-external */
+.org-rst-level-1    { background-color: #d9d9d9; } /* rst-level-1 */
+.org-rst-level-2    { background-color: #c7c7c7; } /* rst-level-2 */
+.org-rst-level-3    { background-color: #b5b5b5; } /* rst-level-3 */
+.org-rst-level-4    { background-color: #a3a3a3; } /* rst-level-4 */
+.org-rst-level-5    { background-color: #919191; } /* rst-level-5 */
+.org-rst-level-6    { background-color: #7f7f7f; } /* rst-level-6 */
+.org-rst-literal    { color: #8b2252; }            /* rst-literal */
+.org-rst-reference  { color: #a0522d; }            /* rst-reference */
+.org-rst-transition { color: #a020f0; }            /* rst-transition */
rename from elpa/yasnippet-0.9.1/doc/stylesheets/styles.css
rename to elpa/yasnippet-0.11.0/doc/stylesheets/styles.css
old mode 100755
new mode 100644
rename from elpa/yasnippet-0.9.1/doc/yas-doc-helper.el
rename to elpa/yasnippet-0.11.0/doc/yas-doc-helper.el
--- a/elpa/yasnippet-0.9.1/doc/yas-doc-helper.el
+++ b/elpa/yasnippet-0.11.0/doc/yas-doc-helper.el
@@ -155,7 +155,8 @@
   (let ((org-publish-use-timestamps-flag nil)
         (org-export-copy-to-kill-ring nil)
         (org-confirm-babel-evaluate nil)
-        (make-backup-files nil))
+        (make-backup-files nil)
+        (org-html-htmlize-output-type 'css))
     (org-publish "yasnippet" 'force)))
 
 
rename from elpa/yasnippet-0.9.1/snippets/c++-mode/.yas-parents
rename to elpa/yasnippet-0.11.0/snippets/c++-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/c++-mode/beginend
rename to elpa/yasnippet-0.11.0/snippets/c++-mode/beginend
rename from elpa/yasnippet-0.9.1/snippets/c++-mode/class
rename to elpa/yasnippet-0.11.0/snippets/c++-mode/class
rename from elpa/yasnippet-0.9.1/snippets/c++-mode/ns
rename to elpa/yasnippet-0.11.0/snippets/c++-mode/ns
rename from elpa/yasnippet-0.9.1/snippets/c++-mode/template
rename to elpa/yasnippet-0.11.0/snippets/c++-mode/template
rename from elpa/yasnippet-0.9.1/snippets/c++-mode/using
rename to elpa/yasnippet-0.11.0/snippets/c++-mode/using
copy from elpa/yasnippet-0.9.1/snippets/c++-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/c-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/c-mode/fopen
rename to elpa/yasnippet-0.11.0/snippets/c-mode/fopen
rename from elpa/yasnippet-0.9.1/snippets/c-mode/printf
rename to elpa/yasnippet-0.11.0/snippets/c-mode/printf
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/do
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/do
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/for
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/for
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/if
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/if
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/inc
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/inc
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/inc.1
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/inc.1
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/main
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/main
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/once
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/once
rename from elpa/yasnippet-0.9.1/snippets/cc-mode/struct
rename to elpa/yasnippet-0.11.0/snippets/cc-mode/struct
rename from elpa/yasnippet-0.9.1/snippets/cperl-mode/.yas-parents
rename to elpa/yasnippet-0.11.0/snippets/cperl-mode/.yas-parents
copy from elpa/yasnippet-0.9.1/snippets/c++-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/csharp-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/attrib
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/attrib
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/attrib.1
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/attrib.1
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/attrib.2
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/attrib.2
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/class
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/class
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/comment
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/comment
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/comment.1
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/comment.1
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/comment.2
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/comment.2
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/comment.3
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/comment.3
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/method
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/method
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/namespace
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/namespace
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/prop
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/prop
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/region
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/region
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/using
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/using
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/using.1
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/using.1
rename from elpa/yasnippet-0.9.1/snippets/csharp-mode/using.2
rename to elpa/yasnippet-0.11.0/snippets/csharp-mode/using.2
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/css-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/css-mode/bg
rename to elpa/yasnippet-0.11.0/snippets/css-mode/bg
rename from elpa/yasnippet-0.9.1/snippets/css-mode/bg.1
rename to elpa/yasnippet-0.11.0/snippets/css-mode/bg.1
rename from elpa/yasnippet-0.9.1/snippets/css-mode/bor
rename to elpa/yasnippet-0.11.0/snippets/css-mode/bor
rename from elpa/yasnippet-0.9.1/snippets/css-mode/cl
rename to elpa/yasnippet-0.11.0/snippets/css-mode/cl
rename from elpa/yasnippet-0.9.1/snippets/css-mode/disp.block
rename to elpa/yasnippet-0.11.0/snippets/css-mode/disp.block
rename from elpa/yasnippet-0.9.1/snippets/css-mode/disp.inline
rename to elpa/yasnippet-0.11.0/snippets/css-mode/disp.inline
rename from elpa/yasnippet-0.9.1/snippets/css-mode/disp.none
rename to elpa/yasnippet-0.11.0/snippets/css-mode/disp.none
rename from elpa/yasnippet-0.9.1/snippets/css-mode/ff
rename to elpa/yasnippet-0.11.0/snippets/css-mode/ff
rename from elpa/yasnippet-0.9.1/snippets/css-mode/fs
rename to elpa/yasnippet-0.11.0/snippets/css-mode/fs
rename from elpa/yasnippet-0.9.1/snippets/css-mode/mar.bottom
rename to elpa/yasnippet-0.11.0/snippets/css-mode/mar.bottom
rename from elpa/yasnippet-0.9.1/snippets/css-mode/mar.left
rename to elpa/yasnippet-0.11.0/snippets/css-mode/mar.left
rename from elpa/yasnippet-0.9.1/snippets/css-mode/mar.mar
rename to elpa/yasnippet-0.11.0/snippets/css-mode/mar.mar
rename from elpa/yasnippet-0.9.1/snippets/css-mode/mar.margin
rename to elpa/yasnippet-0.11.0/snippets/css-mode/mar.margin
rename from elpa/yasnippet-0.9.1/snippets/css-mode/mar.right
rename to elpa/yasnippet-0.11.0/snippets/css-mode/mar.right
rename from elpa/yasnippet-0.9.1/snippets/css-mode/mar.top
rename to elpa/yasnippet-0.11.0/snippets/css-mode/mar.top
rename from elpa/yasnippet-0.9.1/snippets/css-mode/pad.bottom
rename to elpa/yasnippet-0.11.0/snippets/css-mode/pad.bottom
rename from elpa/yasnippet-0.9.1/snippets/css-mode/pad.left
rename to elpa/yasnippet-0.11.0/snippets/css-mode/pad.left
rename from elpa/yasnippet-0.9.1/snippets/css-mode/pad.pad
rename to elpa/yasnippet-0.11.0/snippets/css-mode/pad.pad
rename from elpa/yasnippet-0.9.1/snippets/css-mode/pad.padding
rename to elpa/yasnippet-0.11.0/snippets/css-mode/pad.padding
rename from elpa/yasnippet-0.9.1/snippets/css-mode/pad.right
rename to elpa/yasnippet-0.11.0/snippets/css-mode/pad.right
rename from elpa/yasnippet-0.9.1/snippets/css-mode/pad.top
rename to elpa/yasnippet-0.11.0/snippets/css-mode/pad.top
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/.read_me
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/.read_me
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/add-hook.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/add-hook.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/and.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/and.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/append.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/append.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/apply.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/apply.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/aref.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/aref.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/aset.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/aset.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/assq.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/assq.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/autoload.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/autoload.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/backward-char.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/backward-char.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/beginning-of-line.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/beginning-of-line.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/bounds-of-thing-at-point.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/bounds-of-thing-at-point.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-file-name.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-file-name.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-modified-p.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-modified-p.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-substring-no-properties.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-substring-no-properties.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/buffer-substring.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/buffer-substring.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/car.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/car.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/cdr.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/cdr.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/concat.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/concat.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/cond.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/cond.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/condition-case.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/condition-case.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/cons.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/cons.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/consp.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/consp.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/copy-directory.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/copy-directory.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/copy-file.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/copy-file.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/current-buffer.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/current-buffer.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/custom-autoload.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/custom-autoload.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defalias.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defalias.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defcustom.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defcustom.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/define-key.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/define-key.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defsubst.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defsubst.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defun.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defun.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/defvar.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/defvar.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-char.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-char.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-directory.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-directory.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-file.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-file.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/delete-region.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/delete-region.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/directory-files.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/directory-files.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/dolist.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/dolist.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/end-of-line.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/end-of-line.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/eq.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/eq.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/equal.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/equal.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/error.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/error.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/expand-file-name.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/expand-file-name.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/f.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/f.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/fboundp.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/fboundp.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-directory.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-directory.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-extension.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-extension.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-nondirectory.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-nondirectory.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-name-sans-extension.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-name-sans-extension.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/file-relative-name.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/file-relative-name.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/find-file.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/find-file.yasnippet
copy from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/f.yasnippet
copy to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/format.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/forward-char.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/forward-char.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/forward-line.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/forward-line.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/funcall.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/funcall.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/function.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/function.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/get.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/get.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/global-set-key.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/global-set-key.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/goto-char.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/goto-char.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/if.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/if.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/insert-file-contents.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/insert-file-contents.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/insert.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/insert.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/interactive.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/interactive.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/kbd.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/kbd.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/kill-buffer.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/kill-buffer.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/lambda.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/lambda.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/length.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/length.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/let.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/let.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/line-beginning-position.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/line-beginning-position.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/line-end-position.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/line-end-position.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/list.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/list.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/looking-at.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/looking-at.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/make-directory.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/make-directory.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/make-local-variable.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/make-local-variable.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/mapc.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/mapc.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/mapcar.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/mapcar.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/match-beginning.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/match-beginning.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/match-end.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/match-end.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/match-string.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/match-string.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/memq.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/memq.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/message.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/message.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/not.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/not.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/nth.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/nth.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/null.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/null.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/number-to-string.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/number-to-string.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/or.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/or.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/point-max.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/point-max.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/point-min.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/point-min.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/point.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/point.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/princ.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/princ.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/print.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/print.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/progn.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/progn.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/push.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/push.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/put.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/put.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/re-search-backward.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/re-search-backward.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/re-search-forward.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/re-search-forward.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/region-active-p.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/region-active-p.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/region-beginning.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/region-beginning.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/region-end.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/region-end.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/rename-file.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/rename-file.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/repeat.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/repeat.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/replace-regexp-in-string.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/replace-regexp-in-string.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/replace-regexp.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/replace-regexp.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/require.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/require.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/save-buffer.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/save-buffer.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/save-excursion.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/save-excursion.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-backward-regexp.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-backward-regexp.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-backward.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-backward.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-forward-regexp.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-forward-regexp.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/search-forward.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/search-forward.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set-buffer.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set-buffer.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set-file-modes.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set-file-modes.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set-mark.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set-mark.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/set.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/set.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/setq.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/setq.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/skip-chars-backward.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/skip-chars-backward.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/skip-chars-forward.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/skip-chars-forward.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/split-string.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/split-string.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string-match.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string-match.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string-to-number.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string-to-number.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/string=.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/string=.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/stringp.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/stringp.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/substring.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/substring.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/thing-at-point.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/thing-at-point.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/unless.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/unless.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/vector.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/vector.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/when.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/when.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/while.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/while.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/widget-get.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/widget-get.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/with-current-buffer.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/with-current-buffer.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-dired.process_marked.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-dired.process_marked.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-file.process.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-file.process.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-file.read-lines.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-file.read-lines.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-find-replace.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-find-replace.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-grabstring.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-grabstring.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-grabthing.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-grabthing.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-traverse_dir.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-traverse_dir.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/x-word-or-region.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/x-word-or-region.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/y-or-n-p.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/y-or-n-p.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/yes-or-no-p.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/emacs-lisp-mode/yes-or-no-p.yasnippet
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/erlang-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/after
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/after
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/begin
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/begin
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/beh
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/beh
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/case
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/case
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/compile
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/compile
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/def
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/def
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/exp
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/exp
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/fun
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/fun
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/if
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/if
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/ifdef
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/ifdef
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/ifndef
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/ifndef
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/imp
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/imp
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/inc
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/inc
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/inc.lib
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/inc.lib
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/loop
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/loop
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/mod
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/mod
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/rcv
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/rcv
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/rcv.after
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/rcv.after
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/rec
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/rec
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/try
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/try
rename from elpa/yasnippet-0.9.1/snippets/erlang-mode/undef
rename to elpa/yasnippet-0.11.0/snippets/erlang-mode/undef
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/f90-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/au
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/au
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/bd
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/bd
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/c
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/c
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/ch
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/ch
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/cx
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/cx
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/dc
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/dc
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/do
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/do
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/dp
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/dp
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/eq
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/eq
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/ib
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/ib
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/ic
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/ic
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/ich
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/ich
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/if
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/if
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/ii
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/ii
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/il
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/il
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/in
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/in
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/inc
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/inc
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/intr
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/intr
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/ir
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/ir
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/l
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/l
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/pa
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/pa
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/pr
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/pr
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/re
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/re
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/st
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/st
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/su
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/su
rename from elpa/yasnippet-0.9.1/snippets/f90-mode/wr
rename to elpa/yasnippet-0.11.0/snippets/f90-mode/wr
rename from elpa/yasnippet-0.9.1/snippets/html-mode/.yas-make-groups
rename to elpa/yasnippet-0.11.0/snippets/html-mode/.yas-make-groups
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/html-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/html-mode/b.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/html-mode/b.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/html-mode/body
rename to elpa/yasnippet-0.11.0/snippets/html-mode/body
rename from elpa/yasnippet-0.9.1/snippets/html-mode/br
rename to elpa/yasnippet-0.11.0/snippets/html-mode/br
rename from elpa/yasnippet-0.9.1/snippets/html-mode/code
rename to elpa/yasnippet-0.11.0/snippets/html-mode/code
rename from elpa/yasnippet-0.9.1/snippets/html-mode/code.class
rename to elpa/yasnippet-0.11.0/snippets/html-mode/code.class
rename from elpa/yasnippet-0.9.1/snippets/html-mode/div
rename to elpa/yasnippet-0.11.0/snippets/html-mode/div
rename from elpa/yasnippet-0.9.1/snippets/html-mode/div.class
rename to elpa/yasnippet-0.11.0/snippets/html-mode/div.class
rename from elpa/yasnippet-0.9.1/snippets/html-mode/div.id
rename to elpa/yasnippet-0.11.0/snippets/html-mode/div.id
rename from elpa/yasnippet-0.9.1/snippets/html-mode/div.id-class
rename to elpa/yasnippet-0.11.0/snippets/html-mode/div.id-class
rename from elpa/yasnippet-0.9.1/snippets/html-mode/dov
rename to elpa/yasnippet-0.11.0/snippets/html-mode/dov
rename from elpa/yasnippet-0.9.1/snippets/html-mode/form
rename to elpa/yasnippet-0.11.0/snippets/html-mode/form
rename from elpa/yasnippet-0.9.1/snippets/html-mode/head
rename to elpa/yasnippet-0.11.0/snippets/html-mode/head
rename from elpa/yasnippet-0.9.1/snippets/html-mode/header/h1
rename to elpa/yasnippet-0.11.0/snippets/html-mode/header/h1
rename from elpa/yasnippet-0.9.1/snippets/html-mode/header/h2
rename to elpa/yasnippet-0.11.0/snippets/html-mode/header/h2
rename from elpa/yasnippet-0.9.1/snippets/html-mode/header/h3
rename to elpa/yasnippet-0.11.0/snippets/html-mode/header/h3
rename from elpa/yasnippet-0.9.1/snippets/html-mode/header/h4
rename to elpa/yasnippet-0.11.0/snippets/html-mode/header/h4
rename from elpa/yasnippet-0.9.1/snippets/html-mode/header/h5
rename to elpa/yasnippet-0.11.0/snippets/html-mode/header/h5
rename from elpa/yasnippet-0.9.1/snippets/html-mode/header/h6
rename to elpa/yasnippet-0.11.0/snippets/html-mode/header/h6
rename from elpa/yasnippet-0.9.1/snippets/html-mode/hr
rename to elpa/yasnippet-0.11.0/snippets/html-mode/hr
rename from elpa/yasnippet-0.9.1/snippets/html-mode/href
rename to elpa/yasnippet-0.11.0/snippets/html-mode/href
rename from elpa/yasnippet-0.9.1/snippets/html-mode/html
rename to elpa/yasnippet-0.11.0/snippets/html-mode/html
rename from elpa/yasnippet-0.9.1/snippets/html-mode/html.xmlns
rename to elpa/yasnippet-0.11.0/snippets/html-mode/html.xmlns
rename from elpa/yasnippet-0.9.1/snippets/html-mode/i.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/html-mode/i.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/html-mode/img
rename to elpa/yasnippet-0.11.0/snippets/html-mode/img
rename from elpa/yasnippet-0.9.1/snippets/html-mode/input
rename to elpa/yasnippet-0.11.0/snippets/html-mode/input
rename from elpa/yasnippet-0.9.1/snippets/html-mode/link.stylesheet
rename to elpa/yasnippet-0.11.0/snippets/html-mode/link.stylesheet
rename from elpa/yasnippet-0.9.1/snippets/html-mode/link.stylesheet-ie
rename to elpa/yasnippet-0.11.0/snippets/html-mode/link.stylesheet-ie
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/dd
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/dd
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/dl
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/dl
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/dl.id
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/dl.id
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/dt
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/dt
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/li
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/li
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/li.class
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/li.class
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/ol
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/ol
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/ol.class
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/ol.class
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/ol.id
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/ol.id
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/ul
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/ul
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/ul.class
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/ul.class
rename from elpa/yasnippet-0.9.1/snippets/html-mode/list/ul.id
rename to elpa/yasnippet-0.11.0/snippets/html-mode/list/ul.id
rename from elpa/yasnippet-0.9.1/snippets/html-mode/mailto
rename to elpa/yasnippet-0.11.0/snippets/html-mode/mailto
rename from elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype
rename to elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype
rename from elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhml1
rename to elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhml1
rename from elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhtml1_1
rename to elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhtml1_1
rename from elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhtml1_strict
rename to elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhtml1_strict
rename from elpa/yasnippet-0.9.1/snippets/html-mode/meta/doctype.xhtml1_transitional
rename to elpa/yasnippet-0.11.0/snippets/html-mode/meta/doctype.xhtml1_transitional
rename from elpa/yasnippet-0.9.1/snippets/html-mode/meta/meta
rename to elpa/yasnippet-0.11.0/snippets/html-mode/meta/meta
rename from elpa/yasnippet-0.9.1/snippets/html-mode/meta/meta.http-equiv
rename to elpa/yasnippet-0.11.0/snippets/html-mode/meta/meta.http-equiv
rename from elpa/yasnippet-0.9.1/snippets/html-mode/p
rename to elpa/yasnippet-0.11.0/snippets/html-mode/p
rename from elpa/yasnippet-0.9.1/snippets/html-mode/pre
rename to elpa/yasnippet-0.11.0/snippets/html-mode/pre
rename from elpa/yasnippet-0.9.1/snippets/html-mode/q.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/html-mode/q.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/html-mode/quote
rename to elpa/yasnippet-0.11.0/snippets/html-mode/quote
rename from elpa/yasnippet-0.9.1/snippets/html-mode/script.javascript
rename to elpa/yasnippet-0.11.0/snippets/html-mode/script.javascript
rename from elpa/yasnippet-0.9.1/snippets/html-mode/script.javascript-src
rename to elpa/yasnippet-0.11.0/snippets/html-mode/script.javascript-src
rename from elpa/yasnippet-0.9.1/snippets/html-mode/span
rename to elpa/yasnippet-0.11.0/snippets/html-mode/span
rename from elpa/yasnippet-0.9.1/snippets/html-mode/span.class
rename to elpa/yasnippet-0.11.0/snippets/html-mode/span.class
rename from elpa/yasnippet-0.9.1/snippets/html-mode/span.id
rename to elpa/yasnippet-0.11.0/snippets/html-mode/span.id
rename from elpa/yasnippet-0.9.1/snippets/html-mode/style
rename to elpa/yasnippet-0.11.0/snippets/html-mode/style
rename from elpa/yasnippet-0.9.1/snippets/html-mode/table/table
rename to elpa/yasnippet-0.11.0/snippets/html-mode/table/table
rename from elpa/yasnippet-0.9.1/snippets/html-mode/table/td
rename to elpa/yasnippet-0.11.0/snippets/html-mode/table/td
rename from elpa/yasnippet-0.9.1/snippets/html-mode/table/th
rename to elpa/yasnippet-0.11.0/snippets/html-mode/table/th
rename from elpa/yasnippet-0.9.1/snippets/html-mode/table/tr
rename to elpa/yasnippet-0.11.0/snippets/html-mode/table/tr
rename from elpa/yasnippet-0.9.1/snippets/html-mode/textarea
rename to elpa/yasnippet-0.11.0/snippets/html-mode/textarea
rename from elpa/yasnippet-0.9.1/snippets/html-mode/title
rename to elpa/yasnippet-0.11.0/snippets/html-mode/title
rename from elpa/yasnippet-0.9.1/snippets/js-mode/assert.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/assert.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/cb.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/cb.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/com.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/com.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/describe.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/describe.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/err.snippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/err.snippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/error.snippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/error.snippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/expect.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/expect.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/exports.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/exports.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/fn.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/fn.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/for.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/for.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/id.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/id.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/if.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/if.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/invoc.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/invoc.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/it.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/it.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/log.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/log.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/method.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/method.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/mod.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/mod.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/prop.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/prop.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/proto.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/proto.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/rq.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/rq.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/rt.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/rt.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/slice.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/slice.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/super.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/super.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/switch.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/switch.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/throw.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/throw.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/try.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/try.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/var.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/var.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/wh.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/wh.yasnippet
rename from elpa/yasnippet-0.9.1/snippets/js-mode/while.yasnippet
rename to elpa/yasnippet-0.11.0/snippets/js-mode/while.yasnippet
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/latex-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/latex-mode/begin
rename to elpa/yasnippet-0.11.0/snippets/latex-mode/begin
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/+
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/+
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/-
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/-
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/markdown-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/_
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/_
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/__
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/__
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/`
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/`
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h1.1
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h1.1
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h1.2
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h1.2
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h2.1
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h2.1
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h2.2
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h2.2
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h3
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h3
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h4
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h4
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h5
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h5
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/h6
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/h6
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/hr.1
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/hr.1
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/hr.2
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/hr.2
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/img
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/img
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/link
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/link
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/ol
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/ol
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/rimg
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/rimg
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/rlb
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/rlb
rename from elpa/yasnippet-0.9.1/snippets/markdown-mode/rlink
rename to elpa/yasnippet-0.11.0/snippets/markdown-mode/rlink
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/.yas-make-groups
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/.yas-make-groups
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/nxml-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/body
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/body
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/br
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/br
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/code
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/code
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/div
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/div
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/form
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/form
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/head
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/head
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h1
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h1
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h2
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h2
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h3
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h3
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h4
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h4
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h5
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h5
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/header/h6
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/header/h6
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/hr
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/hr
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/href
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/href
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/html
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/html
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/img
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/img
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/input
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/input
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/li
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/li
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/link
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/link
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/doctype
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/doctype
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/doctype.xhtml1_strict
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/doctype.xhtml1_strict
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/doctype.xhtml1_transitional
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/doctype.xhtml1_transitional
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/meta/meta
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/meta/meta
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/name
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/name
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/ol
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/ol
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/p
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/p
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/pre
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/pre
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/quote
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/quote
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/span
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/span
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/style
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/style
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/table
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/table
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/tag.1l
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/tag.1l
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/tag.2l
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/tag.2l
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/td
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/td
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/th
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/th
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/title
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/title
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/tr
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/tr
rename from elpa/yasnippet-0.9.1/snippets/nxml-mode/ul
rename to elpa/yasnippet-0.11.0/snippets/nxml-mode/ul
copy from elpa/yasnippet-0.9.1/snippets/c++-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/objc-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/objc-mode/prop
rename to elpa/yasnippet-0.11.0/snippets/objc-mode/prop
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/perl-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/eval
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/eval
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/for
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/for
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/fore
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/fore
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/if
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/if
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/ife
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/ife
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/ifee
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/ifee
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/sub
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/sub
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/unless
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/unless
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/while
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/while
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/xfore
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/xfore
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/xif
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/xif
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/xunless
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/xunless
rename from elpa/yasnippet-0.9.1/snippets/perl-mode/xwhile
rename to elpa/yasnippet-0.11.0/snippets/perl-mode/xwhile
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/python-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/python-mode/__
rename to elpa/yasnippet-0.11.0/snippets/python-mode/__
rename from elpa/yasnippet-0.9.1/snippets/python-mode/class
rename to elpa/yasnippet-0.11.0/snippets/python-mode/class
rename from elpa/yasnippet-0.9.1/snippets/python-mode/def
rename to elpa/yasnippet-0.11.0/snippets/python-mode/def
rename from elpa/yasnippet-0.9.1/snippets/python-mode/defm
rename to elpa/yasnippet-0.11.0/snippets/python-mode/defm
rename from elpa/yasnippet-0.9.1/snippets/python-mode/for
rename to elpa/yasnippet-0.11.0/snippets/python-mode/for
rename from elpa/yasnippet-0.9.1/snippets/python-mode/ifmain
rename to elpa/yasnippet-0.11.0/snippets/python-mode/ifmain
rename from elpa/yasnippet-0.9.1/snippets/python-mode/prop
rename to elpa/yasnippet-0.11.0/snippets/python-mode/prop
rename from elpa/yasnippet-0.9.1/snippets/python-mode/propg
rename to elpa/yasnippet-0.11.0/snippets/python-mode/propg
rename from elpa/yasnippet-0.9.1/snippets/python-mode/propsg
rename to elpa/yasnippet-0.11.0/snippets/python-mode/propsg
rename from elpa/yasnippet-0.9.1/snippets/python-mode/while
rename to elpa/yasnippet-0.11.0/snippets/python-mode/while
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/rst-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/rst-mode/chap
rename to elpa/yasnippet-0.11.0/snippets/rst-mode/chap
rename from elpa/yasnippet-0.9.1/snippets/rst-mode/sec
rename to elpa/yasnippet-0.11.0/snippets/rst-mode/sec
rename from elpa/yasnippet-0.9.1/snippets/rst-mode/tit
rename to elpa/yasnippet-0.11.0/snippets/rst-mode/tit
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/.yas-make-groups
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/.yas-make-groups
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/ruby-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/all
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/all
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/any
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/any
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/classify
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/classify
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/collect
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/collect
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/deli
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/deli
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/det
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/det
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/ea
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/ea
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eac
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eac
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eai
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eai
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eav
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eav
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/eawi
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/eawi
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/inject
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/inject
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/reject
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/reject
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/select
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/select
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/collections/zip
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/collections/zip
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/forin
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/forin
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/if
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/if
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/ife
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/ife
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/tim
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/tim
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/until
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/until
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/upt
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/upt
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/when
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/when
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/control structure/while
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/control structure/while
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/Comp
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/Comp
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/am
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/am
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/cla
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/cla
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/cls
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/cls
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/mm
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/mm
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/mod
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/mod
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/r
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/r
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/rw
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/rw
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/definitions/w
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/definitions/w
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/#
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/#
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/=b
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/=b
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/app
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/app
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/bm
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/bm
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/case
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/case
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/dee
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/dee
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/rb
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/rb
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/req
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/req
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/rreq
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/rreq
rename from elpa/yasnippet-0.9.1/snippets/ruby-mode/general/y
rename to elpa/yasnippet-0.11.0/snippets/ruby-mode/general/y
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/scala-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/act
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/act
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/act.arg
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/act.arg
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/actor
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/actor
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/ano
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/ano
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/app
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/app
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/arr.new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/arr.new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/arr.val-new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/arr.val-new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/asof
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/asof
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/ass
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/ass
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/ass.true
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/ass.true
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/at.author
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/at.author
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/at.param
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/at.param
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/at.return
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/at.return
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/at.version
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/at.version
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/bang
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/bang
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/case
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/case
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/case.match-all
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/case.match-all
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cast
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cast
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cc
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cc
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cl
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cl
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cl.abs
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cl.abs
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cl.abs-arg
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cl.abs-arg
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cl.arg
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cl.arg
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/clof
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/clof
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/co
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/co
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cons
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cons
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/cons.nil
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/cons.nil
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg-body
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg-body
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg-ret
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg-ret
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.arg-ret-body
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.arg-ret-body
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.body
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.body
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.ret
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.ret
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.ret-body
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.ret-body
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/def.simple
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/def.simple
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/doc.class
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/doc.class
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/doc.def
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/doc.def
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/doc.file
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/doc.file
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/doc.file-scala
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/doc.file-scala
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/doc.file-scala-api
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/doc.file-scala-api
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/doc.scaladoc
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/doc.scaladoc
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/expect
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/expect
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/ext
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/ext
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/for.extract
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/for.extract
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/for.if
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/for.if
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/for.loop
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/for.loop
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/for.multi
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/for.multi
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/foreach
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/foreach
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/hmap.new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/hmap.new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/hmap.val-new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/hmap.val-new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/hset.new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/hset.new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/hset.val-new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/hset.val-new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/if
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/if
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/if.else
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/if.else
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/imp
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/imp
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/intercept
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/intercept
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/isof
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/isof
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/ls.new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/ls.new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/ls.val-new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/ls.val-new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/main
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/main
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/map
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/map
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/map.new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/map.new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/match
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/match
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/match.can
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/match.can
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/match.option
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/match.option
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/mix
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/mix
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/ob
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/ob
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pac
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pac
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pr.newline
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pr.newline
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pr.simple
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pr.simple
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pr.string
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pr.string
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pr.trace
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pr.trace
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pri
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pri
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pri.param
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pri.param
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pro
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pro
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/pro.param
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/pro.param
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/suite
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/suite
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/test
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/test
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/throw
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/throw
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/tr
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/tr
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/tr.ext
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/tr.ext
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/tr.ext-with
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/tr.ext-with
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/tr.with
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/tr.with
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/try
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/try
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/try.catch-finally
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/try.catch-finally
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/try.finally
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/try.finally
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/tup.arrow
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/tup.arrow
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/tup.paren
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/tup.paren
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/val
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/val
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/val.new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/val.new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/val.ret
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/val.ret
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/var
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/var
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/var.new
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/var.new
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/var.ret
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/var.ret
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/whi
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/whi
rename from elpa/yasnippet-0.9.1/snippets/scala-mode/with
rename to elpa/yasnippet-0.11.0/snippets/scala-mode/with
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/snippet-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/snippet-mode/field
rename to elpa/yasnippet-0.11.0/snippets/snippet-mode/field
rename from elpa/yasnippet-0.9.1/snippets/snippet-mode/mirror
rename to elpa/yasnippet-0.11.0/snippets/snippet-mode/mirror
rename from elpa/yasnippet-0.9.1/snippets/snippet-mode/vars
rename to elpa/yasnippet-0.11.0/snippets/snippet-mode/vars
copy from elpa/yasnippet-0.9.1/snippets/markdown-mode/.yas-parents
copy to elpa/yasnippet-0.11.0/snippets/sql-mode/.yas-parents
rename from elpa/yasnippet-0.9.1/snippets/sql-mode/column
rename to elpa/yasnippet-0.11.0/snippets/sql-mode/column
rename from elpa/yasnippet-0.9.1/snippets/sql-mode/constraint
rename to elpa/yasnippet-0.11.0/snippets/sql-mode/constraint
rename from elpa/yasnippet-0.9.1/snippets/sql-mode/constraint.1
rename to elpa/yasnippet-0.11.0/snippets/sql-mode/constraint.1
rename from elpa/yasnippet-0.9.1/snippets/sql-mode/create
rename to elpa/yasnippet-0.11.0/snippets/sql-mode/create
rename from elpa/yasnippet-0.9.1/snippets/sql-mode/create.1
rename to elpa/yasnippet-0.11.0/snippets/sql-mode/create.1
rename from elpa/yasnippet-0.9.1/snippets/sql-mode/references
rename to elpa/yasnippet-0.11.0/snippets/sql-mode/references
rename from elpa/yasnippet-0.9.1/snippets/text-mode/email
rename to elpa/yasnippet-0.11.0/snippets/text-mode/email
rename from elpa/yasnippet-0.9.1/snippets/text-mode/time
rename to elpa/yasnippet-0.11.0/snippets/text-mode/time
rename from elpa/yasnippet-0.9.1/yasnippet-autoloads.el
rename to elpa/yasnippet-0.11.0/yasnippet-autoloads.el
--- a/elpa/yasnippet-0.9.1/yasnippet-autoloads.el
+++ b/elpa/yasnippet-0.11.0/yasnippet-autoloads.el
@@ -3,8 +3,8 @@
 ;;; Code:
 (add-to-list 'load-path (or (file-name-directory #$) (car load-path)))
 
-;;;### (autoloads nil "yasnippet" "yasnippet.el" (22294 19770 620363
-;;;;;;  497000))
+;;;### (autoloads nil "yasnippet" "yasnippet.el" (22708 23348 30969
+;;;;;;  631000))
 ;;; Generated autoloads from yasnippet.el
 
 (autoload 'yas-minor-mode "yasnippet" "\
@@ -44,10 +44,15 @@
 
 \(fn &optional ARG)" t nil)
 
+(autoload 'snippet-mode "yasnippet" "\
+A mode for editing yasnippets
+
+\(fn)" t nil)
+
 ;;;***
 
 ;;;### (autoloads nil nil ("yasnippet-debug.el" "yasnippet-pkg.el"
-;;;;;;  "yasnippet-tests.el") (22294 19775 412426 974000))
+;;;;;;  "yasnippet-tests.el") (22708 23351 370672 651000))
 
 ;;;***
 
rename from elpa/yasnippet-0.9.1/yasnippet-debug.el
rename to elpa/yasnippet-0.11.0/yasnippet-debug.el
rename from elpa/yasnippet-0.9.1/yasnippet-pkg.el
rename to elpa/yasnippet-0.11.0/yasnippet-pkg.el
--- a/elpa/yasnippet-0.9.1/yasnippet-pkg.el
+++ b/elpa/yasnippet-0.11.0/yasnippet-pkg.el
@@ -1,2 +1,2 @@
 ;; Generated package description from yasnippet.el
-(define-package "yasnippet" "0.9.1" "Yet another snippet extension for Emacs." 'nil :url "http://github.com/capitaomorte/yasnippet" :keywords '("convenience" "emulation"))
+(define-package "yasnippet" "0.11.0" "Yet another snippet extension for Emacs." '((cl-lib "0.5")) :url "http://github.com/joaotavora/yasnippet" :keywords '("convenience" "emulation"))
rename from elpa/yasnippet-0.9.1/yasnippet-tests.el
rename to elpa/yasnippet-0.11.0/yasnippet-tests.el
--- a/elpa/yasnippet-0.9.1/yasnippet-tests.el
+++ b/elpa/yasnippet-0.11.0/yasnippet-tests.el
@@ -27,7 +27,7 @@
 (require 'yasnippet)
 (require 'ert)
 (require 'ert-x)
-(require 'cl)
+(require 'cl-lib)
 
 
 ;;; Snippet mechanics
@@ -38,14 +38,17 @@
 (ert-deftest field-navigation ()
   (with-temp-buffer
     (yas-minor-mode 1)
-    (yas-expand-snippet "${1:brother} from another ${2:mother}")
+    (yas-expand-snippet "${1:brother} from ${2:another} ${3:mother}")
     (should (string= (yas--buffer-contents)
                      "brother from another mother"))
-
     (should (looking-at "brother"))
     (ert-simulate-command '(yas-next-field-or-maybe-expand))
+    (should (looking-at "another"))
+    (ert-simulate-command '(yas-next-field-or-maybe-expand))
     (should (looking-at "mother"))
     (ert-simulate-command '(yas-prev-field))
+    (should (looking-at "another"))
+    (ert-simulate-command '(yas-prev-field))
     (should (looking-at "brother"))))
 
 (ert-deftest simple-mirror ()
@@ -68,6 +71,26 @@
     (should (string= (yas--buffer-contents)
                      "bla from another BLA"))))
 
+(ert-deftest mirror-with-transformation-and-autofill ()
+  "Test interaction of autofill with mirror transforms"
+  (let ((words "one two three four five")
+        filled-words)
+    (with-temp-buffer
+      (c-mode)      ; In `c-mode' filling comments works by narrowing.
+      (yas-minor-mode +1)
+      (setq fill-column 10)
+      (auto-fill-mode +1)
+      (yas-expand-snippet "/* $0\n */")
+      (yas-mock-insert words)
+      (setq filled-words (delete-and-extract-region (point-min) (point-max)))
+      (yas-expand-snippet "/* $1\n */\n$2$2")
+      (should (string= (yas--buffer-contents)
+                       "/* \n */\n"))
+      (yas-mock-insert words)
+      (should (string= (yas--buffer-contents)
+                       (concat filled-words "\n"))))))
+
+
 (ert-deftest primary-field-transformation ()
   (with-temp-buffer
     (yas-minor-mode 1)
@@ -173,6 +196,88 @@
     (ert-simulate-command '(yas-prev-field))
     (should (looking-at "little sibling"))))
 
+(ert-deftest basic-indentation ()
+  (with-temp-buffer
+    (ruby-mode)
+    (yas-minor-mode 1)
+    (set (make-local-variable 'yas-indent-line) 'auto)
+    (set (make-local-variable 'yas-also-auto-indent-first-line) t)
+    (yas-expand-snippet "def ${1:method}${2:(${3:args})}\n$0\nend")
+    ;; Note that empty line is not indented.
+    (should (string= "def method(args)
+
+end" (buffer-string)))
+    (cl-loop repeat 3 do (ert-simulate-command '(yas-next-field)))
+    (yas-mock-insert (make-string (random 5) ?\ )) ; purposedly mess up indentation
+    (yas-expand-snippet "class << ${self}\n  $0\nend")
+    (ert-simulate-command '(yas-next-field))
+    (should (string= "def method(args)
+  class << self
+    
+  end
+end" (buffer-string)))
+    (should (= 4 (current-column)))))
+
+(ert-deftest indentation-markers ()
+  "Test a snippet with indentation markers (`$<')."
+  (with-temp-buffer
+    (ruby-mode)
+    (yas-minor-mode 1)
+    (set (make-local-variable 'yas-indent-line) nil)
+    (yas-expand-snippet "def ${1:method}${2:(${3:args})}\n$>Indent\nNo indent\\$>\nend")
+    (should (string= "def method(args)
+  Indent
+No indent$>
+end" (buffer-string)))))
+
+(ert-deftest single-line-multi-mirror-indentation ()
+  "Make sure not to indent with multiple mirrors per line."
+  ;; See also Github issue #712.
+  (with-temp-buffer
+    (text-mode)
+    (yas-minor-mode 1)
+    (yas-expand-snippet "${1:XXXXX} --------
+$1   ---------------- $1 ----
+$1   ------------------------")
+    (should (string= (yas--buffer-contents) "XXXXX --------
+XXXXX   ---------------- XXXXX ----
+XXXXX   ------------------------"))))
+
+(ert-deftest indent-mirrors-on-update ()
+  "Check that mirrors are always kept indented."
+  (with-temp-buffer
+    (ruby-mode)
+    (yas-minor-mode 1)
+    (yas-expand-snippet "def $1\n$1\nend")
+    (yas-mock-insert "xxx")
+    ;; Assuming 2 space indent.
+    (should (string= "def xxx\n  xxx\nend" (buffer-string)))))
+
+
+(ert-deftest snippet-with-multiline-mirrors-issue-665 ()
+  "In issue 665, a multi-line mirror is attempted."
+  (with-temp-buffer
+    (ruby-mode)
+    (yas-minor-mode 1)
+    (yas-expand-snippet "def initialize(${1:params})\n$2${1:$(
+mapconcat #'(lambda (arg)
+                 (format \"@%s = %s\" arg arg))
+             (split-string yas-text \", \")
+             \"\n\")}\nend")
+    (yas-mock-insert "bla, ble, bli")
+    (ert-simulate-command '(yas-next-field))
+    (let ((expected (mapconcat #'identity
+                               '("@bla = bla"
+                                 ;; assume ruby is always indented to 2 spaces
+                                 "  @ble = ble"
+                                 "  @bli = bli")
+                               "\n")))
+      (should (looking-at expected))
+      (yas-mock-insert "blo")
+      (ert-simulate-command '(yas-prev-field))
+      (ert-simulate-command '(yas-next-field))
+      (should (looking-at (concat "blo" expected))))))
+
 
 ;;; Snippet expansion and character escaping
 ;;; Thanks to @zw963 (Billy) for the testing
@@ -402,7 +507,7 @@
            (yas-should-expand '(("foo-barbaz" . "OKfoo-barbazOK"))))
          (let ((yas-key-syntaxes
                 (cons #'(lambda (_start-point)
-                          (unless (looking-back "-")
+                          (unless (eq ?- (char-before))
                             (backward-char)
                             'again))
                       yas-key-syntaxes))
@@ -421,48 +526,16 @@
 
 ;;; Loading
 ;;;
-(defun yas--call-with-temporary-redefinitions (function
-                                               &rest function-names-and-overriding-functions)
-  (let* ((overrides (remove-if-not #'(lambda (fdef)
-                                       (fboundp (first fdef)))
-                                   function-names-and-overriding-functions))
-         (definition-names (mapcar #'first overrides))
-         (overriding-functions (mapcar #'second overrides))
-         (saved-functions (mapcar #'symbol-function definition-names)))
-    ;; saving all definitions before overriding anything ensures FDEFINITION
-    ;; errors don't cause accidental permanent redefinitions.
-    ;;
-    (cl-labels ((set-fdefinitions (names functions)
-                                  (loop for name in names
-                                        for fn in functions
-                                        do (fset name fn))))
-      (set-fdefinitions definition-names overriding-functions)
-      (unwind-protect (funcall function)
-	(set-fdefinitions definition-names saved-functions)))))
-
-(defmacro yas--with-temporary-redefinitions (fdefinitions &rest body)
-  ;; "Temporarily (but globally) redefine each function in FDEFINITIONS.
-  ;; E.g.: (yas--with-temporary-redefinitions ((foo (x) ...)
-  ;;                                           (bar (x) ...))
-  ;;         ;; code that eventually calls foo, bar of (setf foo)
-  ;;         ...)"
-  ;; FIXME: This is hideous!  Better use defadvice (or at least letf).
-  `(yas--call-with-temporary-redefinitions
-    (lambda () ,@body)
-    ,@(mapcar #'(lambda (thingy)
-                  `(list ',(first thingy)
-                         (lambda ,@(rest thingy))))
-              fdefinitions)))
 
 (defmacro yas-with-overriden-buffer-list (&rest body)
   (let ((saved-sym (make-symbol "yas--buffer-list")))
     `(let ((,saved-sym (symbol-function 'buffer-list)))
-       (yas--with-temporary-redefinitions
-           ((buffer-list ()
-                         (remove-if #'(lambda (buf)
-                                        (with-current-buffer buf
-                                          (eq major-mode 'lisp-interaction-mode)))
-                                    (funcall ,saved-sym))))
+       (cl-letf (((symbol-function 'buffer-list)
+                  (lambda ()
+                    (cl-remove-if (lambda (buf)
+                                    (with-current-buffer buf
+                                      (eq major-mode 'lisp-interaction-mode)))
+                                  (funcall ,saved-sym)))))
          ,@body))))
 
 
@@ -505,20 +578,71 @@
   (yas-with-some-interesting-snippet-dirs
    (yas-reload-all)
    (yas-recompile-all)
-   (yas--with-temporary-redefinitions ((yas--load-directory-2
-                                        (&rest _dummies)
-                                        (ert-fail "yas--load-directory-2 shouldn't be called when snippets have been compiled")))
+   (cl-letf (((symbol-function 'yas--load-directory-2)
+              (lambda (&rest _dummies)
+                (ert-fail "yas--load-directory-2 shouldn't be called when snippets have been compiled"))))
      (yas-reload-all)
      (yas--basic-jit-loading-1))))
 
+(ert-deftest snippet-load-uuid ()
+  "Test snippets with same uuid override old ones."
+  (yas-saving-variables
+   (yas-define-snippets
+    'text-mode
+    '(("1" "one" "one" nil nil nil nil "C-c 1" "uuid-1")
+      ("2" "two" "two" nil nil nil nil nil "uuid-2")))
+   (with-temp-buffer
+     (text-mode)
+     (yas-minor-mode +1)
+     (should (equal (yas-lookup-snippet "one") "one"))
+     (should (eq (key-binding "\C-c1") 'yas-expand-from-keymap))
+     (yas-define-snippets
+      'text-mode '(("_1" "one!" "won" nil nil nil nil nil "uuid-1")))
+     (should (null (yas-lookup-snippet "one" nil 'noerror)))
+     (should (null (key-binding "\C-c1")))
+     (should (equal (yas-lookup-snippet "won") "one!")))))
+
+(ert-deftest snippet-save ()
+  "Make sure snippets can be saved correctly."
+  (yas-saving-variables
+   (yas-with-snippet-dirs
+    '((".emacs.d/snippets"
+       ("text-mode")))
+    (cl-letf (((symbol-function 'y-or-n-p) (lambda (&rest _) t))
+              ((symbol-function 'read-file-name)
+               (lambda (_prompt &optional _dir _default _mustmatch initial _predicate)
+                 (expand-file-name initial)))
+              ((symbol-function 'completing-read)
+               (lambda (_prompt collection &rest _)
+                 (or (car collection) ""))))
+      (with-temp-buffer
+        (text-mode)
+        (yas-minor-mode +1)
+        (save-current-buffer
+          (yas-new-snippet t)
+          (with-current-buffer "*new snippet*"
+            (snippet-mode)
+            (insert "# name: foo\n# key: bar\n# --\nsnippet foo")
+            (call-interactively 'yas-load-snippet-buffer-and-close)))
+        (save-current-buffer
+          (yas-new-snippet t)
+          (with-current-buffer "*new snippet*"
+            (snippet-mode)
+            (insert "# name: bar\n# key: bar\n# --\nsnippet bar")
+            (call-interactively 'yas-load-snippet-buffer-and-close)))
+        (should (file-readable-p
+                 (expand-file-name "foo" (car yas-snippet-dirs))))
+        (should (file-readable-p
+                 (expand-file-name "bar" (car yas-snippet-dirs)))))))))
+
 (ert-deftest visiting-compiled-snippets ()
   "Test snippet visiting for compiled snippets."
   (yas-with-some-interesting-snippet-dirs
    (yas-recompile-all)
    (yas-reload-all 'no-jit) ; must be loaded for `yas-lookup-snippet' to work.
-   (yas--with-temporary-redefinitions ((find-file-noselect
-                                        (filename &rest _)
-                                        (throw 'yas-snippet-file filename)))
+   (cl-letf (((symbol-function 'find-file-noselect)
+              (lambda (filename &rest _)
+                (throw 'yas-snippet-file filename))))
      (should (string-suffix-p
               "cc-mode/def"
               (catch 'yas-snippet-file
@@ -684,12 +808,12 @@
      (let ((menu (cdr (gethash 'fancy-mode yas--menu-table))))
        (should (eql 4 (length menu)))
        (dolist (item '("a-guy" "a-beggar"))
-         (should (find item menu :key #'third :test #'string=)))
-       (should-not (find "an-outcast" menu :key #'third :test #'string=))
+         (should (cl-find item menu :key #'cl-third :test #'string=)))
+       (should-not (cl-find "an-outcast" menu :key #'cl-third :test #'string=))
        (dolist (submenu '("sirs" "ladies"))
          (should (keymapp
-                  (fourth
-                   (find submenu menu :key #'third :test #'string=)))))
+                  (cl-fourth
+                   (cl-find submenu menu :key #'cl-third :test #'string=)))))
        ))))
 
 (ert-deftest test-group-menus ()
@@ -702,19 +826,19 @@
      (let ((menu (cdr (gethash 'c-mode yas--menu-table))))
        (should (eql 3 (length menu)))
        (dolist (item '("printf" "foo-group-a" "foo-group-b"))
-         (should (find item menu :key #'third :test #'string=)))
+         (should (cl-find item menu :key #'cl-third :test #'string=)))
        (dolist (submenu '("foo-group-a" "foo-group-b"))
          (should (keymapp
-                  (fourth
-                   (find submenu menu :key #'third :test #'string=))))))
+                  (cl-fourth
+                   (cl-find submenu menu :key #'cl-third :test #'string=))))))
      ;; now group directives
      ;;
      (let ((menu (cdr (gethash 'lisp-interaction-mode yas--menu-table))))
        (should (eql 1 (length menu)))
-       (should (find "barbar" menu :key #'third :test #'string=))
+       (should (cl-find "barbar" menu :key #'cl-third :test #'string=))
        (should (keymapp
-                (fourth
-                 (find "barbar" menu :key #'third :test #'string=))))))))
+                (cl-fourth
+                 (cl-find "barbar" menu :key #'cl-third :test #'string=))))))))
 
 (ert-deftest test-group-menus-twisted ()
   "Same as similarly named test, but be mean.
@@ -726,20 +850,20 @@
      ;; behaviour
      (with-temp-buffer
        (insert "# group: foo-group-c\n# --\nstrecmp($1)")
-       (write-region nil nil (concat (first (yas-snippet-dirs))
+       (write-region nil nil (concat (car (yas-snippet-dirs))
                                      "/c-mode/foo-group-b/strcmp")))
      (yas-reload-all 'no-jit)
      (let ((menu (cdr (gethash 'c-mode yas--menu-table))))
        (should (eql 4 (length menu)))
        (dolist (item '("printf" "foo-group-a" "foo-group-b" "foo-group-c"))
-         (should (find item menu :key #'third :test #'string=)))
+         (should (cl-find item menu :key #'cl-third :test #'string=)))
        (dolist (submenu '("foo-group-a" "foo-group-b" "foo-group-c"))
          (should (keymapp
-                  (fourth
-                   (find submenu menu :key #'third :test #'string=))))))
+                  (cl-fourth
+                   (cl-find submenu menu :key #'cl-third :test #'string=))))))
      ;; delete the .yas-make-groups file and watch behaviour
      ;;
-     (delete-file (concat (first (yas-snippet-dirs))
+     (delete-file (concat (car (yas-snippet-dirs))
                           "/c-mode/.yas-make-groups"))
      (yas-reload-all 'no-jit)
      (let ((menu (cdr (gethash 'c-mode yas--menu-table))))
@@ -747,19 +871,19 @@
      ;; Change a group directive and reload
      ;;
      (let ((menu (cdr (gethash 'lisp-interaction-mode yas--menu-table))))
-       (should (find "barbar" menu :key #'third :test #'string=)))
+       (should (cl-find "barbar" menu :key #'cl-third :test #'string=)))
 
      (with-temp-buffer
        (insert "# group: foofoo\n# --\n(ert-deftest ${1:name} () $0)")
-       (write-region nil nil (concat (first (yas-snippet-dirs))
+       (write-region nil nil (concat (car (yas-snippet-dirs))
                                      "/lisp-interaction-mode/ert-deftest")))
      (yas-reload-all 'no-jit)
      (let ((menu (cdr (gethash 'lisp-interaction-mode yas--menu-table))))
        (should (eql 1 (length menu)))
-       (should (find "foofoo" menu :key #'third :test #'string=))
+       (should (cl-find "foofoo" menu :key #'cl-third :test #'string=))
        (should (keymapp
-                (fourth
-                 (find "foofoo" menu :key #'third :test #'string=))))))))
+                (cl-fourth
+                 (cl-find "foofoo" menu :key #'cl-third :test #'string=))))))))
 
 
 ;;; The infamous and problematic tab keybinding
@@ -777,23 +901,21 @@
     (should (eq (key-binding [backtab]) 'yas-prev-field))))
 
 (ert-deftest test-rebindings ()
-  (unwind-protect
-      (progn
-        (define-key yas-minor-mode-map [tab] nil)
-        (define-key yas-minor-mode-map (kbd "TAB") nil)
-        (define-key yas-minor-mode-map (kbd "SPC") 'yas-expand)
-        (with-temp-buffer
-          (yas-minor-mode 1)
-          (should (not (eq (key-binding (yas--read-keybinding "TAB")) 'yas-expand)))
-          (should (eq (key-binding (yas--read-keybinding "SPC")) 'yas-expand))
-          (yas-reload-all)
-          (should (not (eq (key-binding (yas--read-keybinding "TAB")) 'yas-expand)))
-          (should (eq (key-binding (yas--read-keybinding "SPC")) 'yas-expand))))
-    ;; FIXME: actually should restore to whatever saved values where there.
-    ;;
-    (define-key yas-minor-mode-map [tab] 'yas-expand)
-    (define-key yas-minor-mode-map (kbd "TAB") 'yas-expand)
-    (define-key yas-minor-mode-map (kbd "SPC") nil)))
+  (let* ((yas-minor-mode-map (copy-keymap yas-minor-mode-map))
+         (minor-mode-map-alist
+          (cons `(yas-minor-mode . ,yas-minor-mode-map)
+                (cl-remove 'yas-minor-mode minor-mode-map-alist
+                           :test #'eq :key #'car))))
+    (define-key yas-minor-mode-map [tab] nil)
+    (define-key yas-minor-mode-map (kbd "TAB") nil)
+    (define-key yas-minor-mode-map (kbd "SPC") 'yas-expand)
+    (with-temp-buffer
+      (yas-minor-mode 1)
+      (should-not (eq (key-binding (kbd "TAB")) 'yas-expand))
+      (should (eq (key-binding (kbd "SPC")) 'yas-expand))
+      (yas-reload-all)
+      (should-not (eq (key-binding (kbd "TAB")) 'yas-expand))
+      (should (eq (key-binding (kbd "SPC")) 'yas-expand)))))
 
 (ert-deftest test-yas-in-org ()
   (with-temp-buffer
@@ -831,7 +953,7 @@
 (defun yas-should-expand (keys-and-expansions)
   (dolist (key-and-expansion keys-and-expansions)
     (yas-exit-all-snippets)
-    (narrow-to-region (point) (point))
+    (erase-buffer)
     (insert (car key-and-expansion))
     (let ((yas-fallback-behavior nil))
       (ert-simulate-command '(yas-expand)))
@@ -845,7 +967,7 @@
 (defun yas-should-not-expand (keys)
   (dolist (key keys)
     (yas-exit-all-snippets)
-    (narrow-to-region (point) (point))
+    (erase-buffer)
     (insert key)
     (let ((yas-fallback-behavior nil))
       (ert-simulate-command '(yas-expand)))
@@ -891,13 +1013,13 @@
          (saved-values (mapcar #'symbol-value vars)))
     (unwind-protect
         (funcall fn)
-      (loop for var in vars
-            for saved in saved-values
-            do (set var saved)))))
+      (cl-loop for var in vars
+               for saved in saved-values
+               do (set var saved)))))
 
 (defun yas-call-with-snippet-dirs (dirs fn)
   (let* ((default-directory (make-temp-file "yasnippet-fixture" t))
-         (yas-snippet-dirs (mapcar #'car dirs)))
+         (yas-snippet-dirs (mapcar (lambda (d) (expand-file-name (car d))) dirs)))
     (with-temp-message ""
       (unwind-protect
           (progn
@@ -934,16 +1056,8 @@
 (put 'yas-with-overriden-buffer-list         'edebug-form-spec t)
 (put 'yas-with-some-interesting-snippet-dirs 'edebug-form-spec t)
 
-
-(put 'yas--with-temporary-redefinitions 'lisp-indent-function 1)
-(put 'yas--with-temporary-redefinitions 'edebug-form-spec '((&rest (defun*)) cl-declarations body))
-
-
-
-
 (provide 'yasnippet-tests)
 ;; Local Variables:
 ;; indent-tabs-mode: nil
-;; byte-compile-warnings: (not cl-functions)
 ;; End:
 ;;; yasnippet-tests.el ends here
rename from elpa/yasnippet-0.9.1/yasnippet.el
rename to elpa/yasnippet-0.11.0/yasnippet.el
--- a/elpa/yasnippet-0.9.1/yasnippet.el
+++ b/elpa/yasnippet-0.11.0/yasnippet.el
@@ -1,12 +1,15 @@
 ;;; yasnippet.el --- Yet another snippet extension for Emacs.
 
-;; Copyright (C) 2008-2013, 2015 Free Software Foundation, Inc.
-;; Authors: pluskid <pluskid@gmail.com>,  João Távora <joaotavora@gmail.com>, Noam Postavsky <npostavs@gmail.com>
+;; Copyright (C) 2008-2016 Free Software Foundation, Inc.
+;; Authors: pluskid <pluskid@gmail.com>,
+;;          João Távora <joaotavora@gmail.com>,
+;;          Noam Postavsky <npostavs@gmail.com>
 ;; Maintainer: Noam Postavsky <npostavs@gmail.com>
-;; Version: 0.9.1
-;; X-URL: http://github.com/capitaomorte/yasnippet
+;; Version: 0.11.0
+;; X-URL: http://github.com/joaotavora/yasnippet
 ;; Keywords: convenience, emulation
-;; URL: http://github.com/capitaomorte/yasnippet
+;; URL: http://github.com/joaotavora/yasnippet
+;; Package-Requires: ((cl-lib "0.5"))
 ;; EmacsWiki: YaSnippetMode
 
 ;; This program is free software: you can redistribute it and/or modify
@@ -124,11 +127,10 @@
 ;;   `custom-set-variables' is executed in your .emacs file.
 ;;
 ;;   For more information and detailed usage, refer to the project page:
-;;      http://github.com/capitaomorte/yasnippet
+;;      http://github.com/joaotavora/yasnippet
 
 ;;; Code:
 
-(require 'cl)
 (require 'cl-lib)
 (require 'easymenu)
 (require 'help-mode)
@@ -153,10 +155,10 @@
 (defvar yas-installed-snippets-dir nil)
 (setq yas-installed-snippets-dir
       (when load-file-name
-        (concat (file-name-directory load-file-name) "snippets")))
+        (expand-file-name "snippets" (file-name-directory load-file-name))))
 
 (defconst yas--default-user-snippets-dir
-  (concat user-emacs-directory "snippets"))
+  (expand-file-name "snippets" user-emacs-directory))
 
 (defcustom yas-snippet-dirs (remove nil
                                     (list yas--default-user-snippets-dir
@@ -172,10 +174,9 @@
 
 The first directory is taken as the default for storing snippet's
 created with `yas-new-snippet'. "
-  :type '(choice (string :tag "Single directory (string)")
-                 (repeat :args (string) :tag "List of directories (strings)"))
-  :group 'yasnippet
-  :require 'yasnippet
+  :type '(choice (directory :tag "Single directory")
+                 (repeat :tag "List of directories"
+                         (choice (directory) (variable))))
   :set #'(lambda (symbol new)
            (let ((old (and (boundp symbol)
                            (symbol-value symbol))))
@@ -198,18 +199,15 @@
                  (t
                   (error "[yas] invalid element %s in `yas-snippet-dirs'" e)))))
 
-(defvaralias 'yas/root-directory 'yas-snippet-dirs)
-
 (defcustom yas-new-snippet-default "\
 # -*- mode: snippet -*-
 # name: $1
 # key: ${2:${1:$(yas--key-from-desc yas-text)}}
 # --
-$0"
+$0`(yas-escape-text yas-selected-text)`"
   "Default snippet to use when creating a new snippet.
 If nil, don't use any snippet."
-  :type 'string
-  :group 'yasnippet)
+  :type 'string)
 
 (defcustom yas-prompt-functions '(yas-dropdown-prompt
                                   yas-completing-prompt
@@ -237,9 +235,8 @@
 - To signal that the user quit the prompting process, you can
 signal `quit' with
 
-  (signal 'quit \"user quit!\")."
-  :type '(repeat function)
-  :group 'yasnippet)
+  (signal \\='quit \"user quit!\")."
+  :type '(repeat function))
 
 (defcustom yas-indent-line 'auto
   "Controls indenting applied to a recent snippet expansion.
@@ -255,28 +252,24 @@
 applies)."
   :type '(choice (const :tag "Nothing"  nothing)
                  (const :tag "Fixed"    fixed)
-                 (const :tag "Auto"     auto))
-  :group 'yasnippet)
+                 (const :tag "Auto"     auto)))
 
 (defcustom yas-also-auto-indent-first-line nil
   "Non-nil means also auto indent first line according to mode.
 
 Naturally this is only valid when `yas-indent-line' is `auto'"
-  :type 'boolean
-  :group 'yasnippet)
+  :type 'boolean)
 
 (defcustom yas-snippet-revival t
   "Non-nil means re-activate snippet fields after undo/redo."
-  :type 'boolean
-  :group 'yasnippet)
+  :type 'boolean)
 
 (defcustom yas-triggers-in-field nil
   "If non-nil, allow stacked expansions (snippets inside snippets).
 
 Otherwise `yas-next-field-or-maybe-expand' just moves on to the
 next field"
-  :type 'boolean
-  :group 'yasnippet)
+  :type 'boolean)
 
 (defcustom yas-fallback-behavior 'call-other-command
   "How to act when `yas-expand' does *not* expand a snippet.
@@ -292,8 +285,7 @@
   COMMAND. If ARGS is non-nil, call COMMAND non-interactively
   with ARGS as arguments."
   :type '(choice (const :tag "Call previous command"  call-other-command)
-                 (const :tag "Do nothing"             return-nil))
-  :group 'yasnippet)
+                 (const :tag "Do nothing"             return-nil)))
 
 (defcustom yas-choose-keys-first nil
   "If non-nil, prompt for snippet key first, then for template.
@@ -301,8 +293,7 @@
 Otherwise prompts for all possible snippet names.
 
 This affects `yas-insert-snippet' and `yas-visit-snippet-file'."
-  :type 'boolean
-  :group 'yasnippet)
+  :type 'boolean)
 
 (defcustom yas-choose-tables-first nil
   "If non-nil, and multiple eligible snippet tables, prompts user for tables first.
@@ -311,8 +302,7 @@
 eligible tables.
 
 This affects `yas-insert-snippet', `yas-visit-snippet-file'"
-  :type 'boolean
-  :group 'yasnippet)
+  :type 'boolean)
 
 (defcustom yas-use-menu 'abbreviate
   "Display a YASnippet menu in the menu bar.
@@ -325,43 +315,43 @@
 
 - If set to `full', every submenu is listed
 
-- If set to `nil', hide the menu.
+- If set to nil, hide the menu.
 
 Any other non-nil value, every submenu is listed."
   :type '(choice (const :tag "Full"  full)
                  (const :tag "Abbreviate" abbreviate)
-                 (const :tag "No menu" nil))
-  :group 'yasnippet)
+                 (const :tag "No menu" nil)))
 
 (defcustom yas-trigger-symbol (or (and (eq window-system 'mac)
                                        (ignore-errors
                                          (char-to-string ?\x21E5))) ;; little ->| sign
                                   " =>")
   "The text that will be used in menu to represent the trigger."
-  :type 'string
-  :group 'yasnippet)
+  :type 'string)
 
 (defcustom yas-wrap-around-region nil
-  "If non-nil, snippet expansion wraps around selected region.
-
-The wrapping occurs just before the snippet's exit marker.  This
-can be overridden on a per-snippet basis."
-  :type 'boolean
-  :group 'yasnippet)
+  "What to insert for snippet's $0 field.
+
+If set to a character, insert contents of corresponding register.
+If non-nil insert region contents.  This can be overridden on a
+per-snippet basis.  A value of `cua' is considered equivalent to
+`?0' for backwards compatibility."
+  :type '(choice (character :tag "Insert from register")
+                 (const t :tag "Insert region contents")
+                 (const nil :tag "Don't insert anything")
+                 (const cua))) ; backwards compat
 
 (defcustom yas-good-grace t
   "If non-nil, don't raise errors in inline elisp evaluation.
 
 An error string \"[yas] error\" is returned instead."
-  :type 'boolean
-  :group 'yasnippet)
+  :type 'boolean)
 
 (defcustom yas-visit-from-menu nil
   "If non-nil visit snippets's files from menu, instead of expanding them.
 
 This can only work when snippets are loaded from files."
-  :type 'boolean
-  :group 'yasnippet)
+  :type 'boolean)
 
 (defcustom yas-expand-only-for-last-commands nil
   "List of `last-command' values to restrict tab-triggering to, or nil.
@@ -370,24 +360,27 @@
 expansion simply by placing the cursor after a valid tab trigger,
 using whichever commands.
 
-Optionally, set this to something like '(self-insert-command) if
+Optionally, set this to something like (self-insert-command) if
 you to wish restrict expansion to only happen when the last
 letter of the snippet tab trigger was typed immediately before
 the trigger key itself."
-  :type '(repeat function)
+  :type '(repeat function))
+
+(defcustom yas-alias-to-yas/prefix-p t
+  "If non-nil make aliases for the old style yas/ prefixed symbols.
+It must be set to nil before loading yasnippet to take effect."
+  :type 'boolean
   :group 'yasnippet)
 
 ;; Only two faces, and one of them shouldn't even be used...
 ;;
 (defface yas-field-highlight-face
   '((t (:inherit 'region)))
-  "The face used to highlight the currently active field of a snippet"
-  :group 'yasnippet)
+  "The face used to highlight the currently active field of a snippet")
 
 (defface yas--field-debug-face
   '()
-  "The face used for debugging some overlays normally hidden"
-  :group 'yasnippet)
+  "The face used for debugging some overlays normally hidden")
 
 
 ;;; User-visible variables
@@ -424,7 +417,7 @@
 in which case it is called again from the previous position and
 may once more reposition point.
 
-For example, if `yas-key-syntaxes'' value is '(\"w\" \"w_\"),
+For example, if `yas-key-syntaxes' has the value (\"w\" \"w_\"),
 trigger keys composed exclusively of \"word\"-syntax characters
 are looked for first. Failing that, longer keys composed of
 \"word\" or \"symbol\" syntax are looked for. Therefore,
@@ -491,7 +484,7 @@
 
           * Otherwise, the snippet is not considered.
 
-    * If it evaluates to the symbol 'always, all snippets are
+    * If it evaluates to the symbol `always', all snippets are
       considered for expansion, regardless of any conditions.
 
     * If it evaluates to t or some other non-nil value
@@ -503,14 +496,14 @@
 
 Here's an example preventing snippets from being expanded from
 inside comments, in `python-mode' only, with the exception of
-snippets returning the symbol 'force-in-comment in their
+snippets returning the symbol `force-in-comment' in their
 conditions.
 
- (add-hook 'python-mode-hook
-           '(lambda ()
+ (add-hook \\='python-mode-hook
+           (lambda ()
               (setq yas-buffer-local-condition
-                    '(if (python-in-string/comment)
-                         '(require-snippet-condition . force-in-comment)
+                    \\='(if (python-syntax-comment-or-string-p)
+                         \\='(require-snippet-condition . force-in-comment)
                        t))))
 
 The default value is similar, it filters out potential snippet
@@ -521,7 +514,7 @@
 
 ;;; Internal variables
 
-(defvar yas--version "0.9.1")
+(defconst yas--version "0.11.0")
 
 (defvar yas--menu-table (make-hash-table)
   "A hash table of MAJOR-MODE symbols to menu keymaps.")
@@ -540,7 +533,7 @@
 
 (defconst yas--backquote-lisp-expression-regexp
   "`\\([^`]*\\)`"
-  "A regexp to recognize a \"`lisp-expression`\" expression." )
+  "A regexp to recognize a \"\\=`lisp-expression\\=`\" expression." )
 
 (defconst yas--transform-mirror-regexp
   "${\\(?:\\([0-9]+\\):\\)?$\\([ \t\n]*([^}]*\\)"
@@ -624,33 +617,33 @@
      )
     ("Prompting method"
      ["System X-widget" (setq yas-prompt-functions
-                              (cons 'yas-x-prompt
-                                    (remove 'yas-x-prompt
+                              (cons #'yas-x-prompt
+                                    (remove #'yas-x-prompt
                                             yas-prompt-functions)))
       :help "Use your windowing system's (gtk, mac, windows, etc...) default menu"
       :active t :style radio   :selected (eq (car yas-prompt-functions)
-                                             'yas-x-prompt)]
+                                             #'yas-x-prompt)]
      ["Dropdown-list" (setq yas-prompt-functions
-                            (cons 'yas-dropdown-prompt
-                                  (remove 'yas-dropdown-prompt
+                            (cons #'yas-dropdown-prompt
+                                  (remove #'yas-dropdown-prompt
                                           yas-prompt-functions)))
       :help "Use a special dropdown list"
       :active t :style radio   :selected (eq (car yas-prompt-functions)
-                                             'yas-dropdown-prompt)]
+                                             #'yas-dropdown-prompt)]
      ["Ido" (setq yas-prompt-functions
-                  (cons 'yas-ido-prompt
-                        (remove 'yas-ido-prompt
+                  (cons #'yas-ido-prompt
+                        (remove #'yas-ido-prompt
                                 yas-prompt-functions)))
       :help "Use an ido-style minibuffer prompt"
       :active t :style radio   :selected (eq (car yas-prompt-functions)
-                                             'yas-ido-prompt)]
+                                             #'yas-ido-prompt)]
      ["Completing read" (setq yas-prompt-functions
-                              (cons 'yas-completing-prompt
-                                    (remove 'yas-completing-prompt
+                              (cons #'yas-completing-prompt
+                                    (remove #'yas-completing-prompt
                                             yas-prompt-functions)))
       :help "Use a normal minibuffer prompt"
       :active t :style radio   :selected (eq (car yas-prompt-functions)
-                                             'yas-completing-prompt)]
+                                             #'yas-completing-prompt)]
      )
     ("Misc"
      ["Wrap region in exit marker"
@@ -726,22 +719,24 @@
            yas--tables))
 
 (defun yas--modes-to-activate (&optional mode)
-  "Compute list of mode symbols that are active for `yas-expand'
-and friends."
+  "Compute list of mode symbols that are active for `yas-expand' and friends."
+  (defvar yas--dfs)        ;We rely on dynbind.  We could use `letrec' instead!
   (let* ((explored (if mode (list mode) ; Building up list in reverse.
                      (cons major-mode (reverse yas--extra-modes))))
-         (dfs
+         (yas--dfs
           (lambda (mode)
             (cl-loop for neighbour
                      in (cl-list* (get mode 'derived-mode-parent)
-                                  (ignore-errors (symbol-function mode))
+                                  ;; NOTE: `fboundp' check is redundant
+                                  ;; since Emacs 24.4.
+                                  (and (fboundp mode) (symbol-function mode))
                                   (gethash mode yas--parents))
                      when (and neighbour
                                (not (memq neighbour explored))
                                (symbolp neighbour))
                      do (push neighbour explored)
-                     (funcall dfs neighbour)))))
-    (mapcar dfs explored)
+                     (funcall yas--dfs neighbour)))))
+    (mapc yas--dfs explored)
     (nreverse explored)))
 
 (defvar yas-minor-mode-hook nil
@@ -761,11 +756,8 @@
 
 Key bindings:
 \\{yas-minor-mode-map}"
-  nil
-  ;; The indicator for the mode line.
-  " yas"
-  :group 'yasnippet
-  (cond (yas-minor-mode
+  :lighter " yas" ;; The indicator for the mode line.
+  (cond ((and yas-minor-mode (featurep 'yasnippet))
          ;; Install the direct keymaps in `emulation-mode-map-alists'
          ;; (we use `add-hook' even though it's not technically a hook,
          ;; but it works). Then define variables named after modes to
@@ -773,8 +765,8 @@
          ;;
          ;; Also install the post-command-hook.
          ;;
-         (add-hook 'emulation-mode-map-alists 'yas--direct-keymaps)
-         (add-hook 'post-command-hook 'yas--post-command-handler nil t)
+         (cl-pushnew 'yas--direct-keymaps emulation-mode-map-alists)
+         (add-hook 'post-command-hook #'yas--post-command-handler nil t)
          ;; Set the `yas--direct-%s' vars for direct keymap expansion
          ;;
          (dolist (mode (yas--modes-to-activate))
@@ -787,8 +779,9 @@
         (t
          ;; Uninstall the direct keymaps and the post-command hook
          ;;
-         (remove-hook 'post-command-hook 'yas--post-command-handler t)
-         (remove-hook 'emulation-mode-map-alists 'yas--direct-keymaps))))
+         (remove-hook 'post-command-hook #'yas--post-command-handler t)
+         (setq emulation-mode-map-alists
+               (remove 'yas--direct-keymaps emulation-mode-map-alists)))))
 
 (defun yas-activate-extra-mode (mode)
   "Activates the snippets for the given `mode' in the buffer.
@@ -820,21 +813,20 @@
        (remove mode
                yas--extra-modes)))
 
-(defvar yas-dont-activate '(minibufferp)
-  "If non-nil don't let `yas-global-mode' affect some buffers.
-
-If a function of zero arguments, then its result is used.
-
-If a list of functions, then all functions must return nil to
-activate yas for this buffer.
-
-In Emacsen <= 23, this variable is buffer-local.  Because
+(define-obsolete-variable-alias 'yas-dont-activate
+  'yas-dont-activate-functions "0.9.2")
+(defvar yas-dont-activate-functions (list #'minibufferp)
+  "Special hook to control which buffers `yas-global-mode' affects.
+Functions are called with no argument, and should return non-nil to prevent
+`yas-global-mode' from enabling yasnippet in this buffer.
+
+In Emacsen < 24, this variable is buffer-local.  Because
 `yas-minor-mode-on' is called by `yas-global-mode' after
 executing the buffer's major mode hook, setting this variable
 there is an effective way to define exceptions to the \"global\"
 activation behaviour.
 
-In Emacsen > 23, only the global value is used.  To define
+In Emacsen >= 24, only the global value is used.  To define
 per-mode exceptions to the \"global\" activation behaviour, call
 `yas-minor-mode' with a negative argument directily in the major
 mode's hook.")
@@ -846,41 +838,45 @@
 (defun yas-minor-mode-on ()
   "Turn on YASnippet minor mode.
 
-Honour `yas-dont-activate', which see."
+Honour `yas-dont-activate-functions', which see."
   (interactive)
-  ;; Check `yas-dont-activate'
-  (unless (cond ((functionp yas-dont-activate)
-                 (funcall yas-dont-activate))
-                ((consp yas-dont-activate)
-                 (some #'funcall yas-dont-activate))
-                (yas-dont-activate))
+  (unless (or
+           ;; The old behavior used for Emacs<24 was to set
+           ;; `yas-dont-activate-functions' to t buffer-locally.
+           (not (or (listp yas-dont-activate-functions)
+                    (functionp yas-dont-activate-functions)))
+           (run-hook-with-args-until-success 'yas-dont-activate-functions))
     (yas-minor-mode 1)))
 
 ;;;###autoload
-(define-globalized-minor-mode yas-global-mode yas-minor-mode yas-minor-mode-on
-  :group 'yasnippet
-  :require 'yasnippet)
+(define-globalized-minor-mode yas-global-mode yas-minor-mode yas-minor-mode-on)
 
 (defun yas--global-mode-reload-with-jit-maybe ()
   "Run `yas-reload-all' when `yas-global-mode' is on."
   (when yas-global-mode (yas-reload-all)))
 
-(add-hook 'yas-global-mode-hook 'yas--global-mode-reload-with-jit-maybe)
+(add-hook 'yas-global-mode-hook #'yas--global-mode-reload-with-jit-maybe)
 
 
 ;;; Major mode stuff
 
 (defvar yas--font-lock-keywords
   (append '(("^#.*$" . font-lock-comment-face))
-          lisp-font-lock-keywords-2
-          '(("$\\([0-9]+\\)"
+          (with-temp-buffer
+            (let ((prog-mode-hook nil)
+                  (emacs-lisp-mode-hook nil))
+              (ignore-errors (emacs-lisp-mode)))
+            (font-lock-set-defaults)
+            (if (eq t (car-safe font-lock-keywords))
+                ;; They're "compiled", so extract the source.
+                (cadr font-lock-keywords)
+              font-lock-keywords))
+          '(("\\$\\([0-9]+\\)"
              (0 font-lock-keyword-face)
              (1 font-lock-string-face t))
-            ("${\\([0-9]+\\):?"
+            ("\\${\\([0-9]+\\):?"
              (0 font-lock-keyword-face)
              (1 font-lock-warning-face t))
-            ("${" . font-lock-keyword-face)
-            ("$[0-9]+?" . font-lock-preprocessor-face)
             ("\\(\\$(\\)" 1 font-lock-preprocessor-face)
             ("}"
              (0 font-lock-keyword-face)))))
@@ -892,9 +888,9 @@
       "Menu used when snippet-mode is active."
       (cons "Snippet"
             (mapcar #'(lambda (ent)
-                        (when (third ent)
-                          (define-key map (third ent) (second ent)))
-                        (vector (first ent) (second ent) t))
+                        (when (nth 2 ent)
+                          (define-key map (nth 2 ent) (nth 1 ent)))
+                        (vector (nth 0 ent) (nth 1 ent) t))
                     '(("Load this snippet" yas-load-snippet-buffer "\C-c\C-l")
                       ("Load and quit window" yas-load-snippet-buffer-and-close "\C-c\C-c")
                       ("Try out this snippet" yas-tryout-snippet "\C-c\C-t")))))
@@ -902,12 +898,14 @@
   "The keymap used when `snippet-mode' is active.")
 
 
+;;;###autoload
 (define-derived-mode snippet-mode text-mode "Snippet"
   "A mode for editing yasnippets"
   (setq font-lock-defaults '(yas--font-lock-keywords))
   (set (make-local-variable 'require-final-newline) nil)
   (set (make-local-variable 'comment-start) "#")
-  (set (make-local-variable 'comment-start-skip) "#+[\t ]*"))
+  (set (make-local-variable 'comment-start-skip) "#+[\t ]*")
+  (add-hook 'after-save-hook #'yas-maybe-load-snippet-buffer nil t))
 
 
 
@@ -954,7 +952,7 @@
   table
   )
 
-(defstruct (yas--table (:constructor yas--make-snippet-table (name)))
+(cl-defstruct (yas--table (:constructor yas--make-snippet-table (name)))
   "A table to store snippets for a particular mode.
 
 Has the following fields:
@@ -1061,7 +1059,7 @@
         (maphash #'(lambda (k v)
                      (let ((template (gethash name v)))
                        (when (and template
-                                  (eq uuid (yas--template-uuid template)))
+                                  (equal uuid (yas--template-uuid template)))
                          (remhash name v)
                          (when (zerop (hash-table-count v))
                            (push k empty-keys)))))
@@ -1129,9 +1127,9 @@
     (unless (eq (cdr menu-binding-pair) :none)
       ;; the menu item name
       ;;
-      (setf (cadar menu-binding-pair) (yas--template-name template))
+      (setf (cl-cadar menu-binding-pair) (yas--template-name template))
       ;; the :keys information (also visible to the user)
-      (setf (getf (cdr (car menu-binding-pair)) :keys)
+      (setf (cl-getf (cdr (car menu-binding-pair)) :keys)
             (or (and keybinding (key-description keybinding))
                 (and key (concat key yas-trigger-symbol))))))
   (unless (yas--template-menu-managed-by-yas-define-menu template)
@@ -1142,7 +1140,7 @@
           (group (yas--template-group template)))
       ;; Remove from menu keymap
       ;;
-      (assert menu-keymap)
+      (cl-assert menu-keymap)
       (yas--delete-from-keymap menu-keymap (yas--template-uuid template))
 
       ;; Add necessary subgroups as necessary.
@@ -1205,10 +1203,10 @@
   (let ((requirement (yas--require-template-specific-condition-p)))
     (if (eq requirement 'always)
         templates
-      (remove-if-not #'(lambda (pair)
-                         (yas--template-can-expand-p
-                          (yas--template-condition (cdr pair)) requirement))
-                     templates))))
+      (cl-remove-if-not (lambda (pair)
+                          (yas--template-can-expand-p
+                           (yas--template-condition (cdr pair)) requirement))
+                        templates))))
 
 (defun yas--require-template-specific-condition-p ()
   "Decide if this buffer requests/requires snippet-specific
@@ -1277,9 +1275,9 @@
           (save-excursion
             (goto-char original)
             (setq templates
-                  (mapcan #'(lambda (table)
-                              (yas--fetch table possible-key))
-                          (yas--get-snippet-tables))))))
+                  (cl-mapcan (lambda (table)
+                               (yas--fetch table possible-key))
+                             (yas--get-snippet-tables))))))
       (when templates
         (list templates (point) original)))))
 
@@ -1346,7 +1344,7 @@
                        (read-kbd-macro keybinding 'need-vector))))
           res)
       (error
-       (yas--message 3 "warning: keybinding \"%s\" invalid since %s."
+       (yas--message 2 "warning: keybinding \"%s\" invalid since %s."
                 keybinding (error-message-string err))
        nil))))
 
@@ -1473,10 +1471,7 @@
   (let* ((dominating-dir (locate-dominating-file file
                                                  ".yas-make-groups"))
          (extra-path (and dominating-dir
-                          (replace-regexp-in-string (concat "^"
-                                                            (expand-file-name dominating-dir))
-                                                    ""
-                                                    (expand-file-name file))))
+                          (file-relative-name file dominating-dir)))
          (extra-dir (and extra-path
                          (file-name-directory extra-path)))
          (group (and extra-dir
@@ -1487,17 +1482,17 @@
 
 (defun yas--subdirs (directory &optional filep)
   "Return subdirs or files of DIRECTORY according to FILEP."
-  (remove-if (lambda (file)
-               (or (string-match "^\\."
-                                 (file-name-nondirectory file))
-                   (string-match "^#.*#$"
-                                 (file-name-nondirectory file))
-                   (string-match "~$"
-                                 (file-name-nondirectory file))
-                   (if filep
-                       (file-directory-p file)
-                     (not (file-directory-p file)))))
-             (directory-files directory t)))
+  (cl-remove-if (lambda (file)
+                  (or (string-match "\\`\\."
+                                    (file-name-nondirectory file))
+                      (string-match "\\`#.*#\\'"
+                                    (file-name-nondirectory file))
+                      (string-match "~\\'"
+                                    (file-name-nondirectory file))
+                      (if filep
+                          (file-directory-p file)
+                        (not (file-directory-p file)))))
+                (directory-files directory t)))
 
 (defun yas--make-menu-binding (template)
   (let ((mode (yas--table-mode (yas--template-table template))))
@@ -1536,31 +1531,31 @@
           (sort templates #'(lambda (t1 t2)
                               (< (length (yas--template-name t1))
                                  (length (yas--template-name t2))))))
-    (some #'(lambda (fn)
-              (funcall fn (or prompt "Choose a snippet: ")
-                       templates
-                       #'yas--template-name))
-          yas-prompt-functions)))
+    (cl-some (lambda (fn)
+               (funcall fn (or prompt "Choose a snippet: ")
+                        templates
+                        #'yas--template-name))
+             yas-prompt-functions)))
 
 (defun yas--prompt-for-keys (keys &optional prompt)
   "Interactively choose a template key from the list KEYS.
 
 Optional PROMPT sets the prompt to use."
   (when keys
-    (some #'(lambda (fn)
-              (funcall fn (or prompt "Choose a snippet key: ") keys))
-          yas-prompt-functions)))
+    (cl-some (lambda (fn)
+               (funcall fn (or prompt "Choose a snippet key: ") keys))
+             yas-prompt-functions)))
 
 (defun yas--prompt-for-table (tables &optional prompt)
   "Interactively choose a table from the list TABLES.
 
 Optional PROMPT sets the prompt to use."
   (when tables
-    (some #'(lambda (fn)
-              (funcall fn (or prompt "Choose a snippet table: ")
-                       tables
-                       #'yas--table-name))
-          yas-prompt-functions)))
+    (cl-some (lambda (fn)
+               (funcall fn (or prompt "Choose a snippet table: ")
+                        tables
+                        #'yas--table-name))
+             yas-prompt-functions)))
 
 (defun yas-x-prompt (prompt choices &optional display-fn)
   "Display choices in a x-window prompt."
@@ -1577,9 +1572,10 @@
                   (selected-window)))
         t)
       `(,prompt ("title"
-                 ,@(mapcar* (lambda (c d) `(,(concat "   " d) . ,c))
-                            choices
-                            (if display-fn (mapcar display-fn choices) choices)))))
+                 ,@(cl-mapcar (lambda (c d) `(,(concat "   " d) . ,c))
+                              choices
+                              (if display-fn (mapcar display-fn choices)
+                                choices)))))
      (keyboard-quit))))
 
 (defun yas-maybe-ido-prompt (prompt choices &optional display-fn)
@@ -1606,11 +1602,11 @@
                           nil 'require-match nil nil)))
     (if (eq choices formatted-choices)
         chosen
-      (nth (or (position chosen formatted-choices :test #'string=) 0)
+      (nth (or (cl-position chosen formatted-choices :test #'string=) 0)
            choices))))
 
 (defun yas-no-prompt (_prompt choices &optional _display-fn)
-  (first choices))
+  (cl-first choices))
 
 
 ;;; Defining snippets
@@ -1684,14 +1680,14 @@
   (or (yas--template-load-file template)
       (let ((file (yas--template-save-file template)))
         (when file
-          (yas--message 2 "%s has no load file, use save file, %s, instead."
+          (yas--message 3 "%s has no load file, using save file, %s, instead."
                         (yas--template-name template) file))
         file)))
 
 (defun yas--load-yas-setup-file (file)
   (if (not yas--creating-compiled-snippets)
       ;; Normal case.
-      (load file 'noerror (<= yas-verbosity 2))
+      (load file 'noerror (<= yas-verbosity 4))
     (let ((elfile (concat file ".el")))
       (when (file-exists-p elfile)
         (insert ";;; contents of the .yas-setup.el support file:\n;;;\n")
@@ -1700,7 +1696,7 @@
 
 (defun yas--define-parents (mode parents)
   "Add PARENTS to the list of MODE's parents."
-  (puthash mode (remove-duplicates
+  (puthash mode (cl-remove-duplicates
                  (append parents
                          (gethash mode yas--parents)))
            yas--parents))
@@ -1747,7 +1743,7 @@
           (cl-loop for buffer in (buffer-list)
                    do (with-current-buffer buffer
                         (when (eq major-mode mode-sym)
-                          (yas--message 3 "Discovered there was already %s in %s" buffer mode-sym)
+                          (yas--message 4 "Discovered there was already %s in %s" buffer mode-sym)
                           (push buffer impatient-buffers)))))))
     ;; ...after TOP-LEVEL-DIR has been completely loaded, call
     ;; `yas--load-pending-jits' in these impatient buffers.
@@ -1769,10 +1765,10 @@
           (insert (format ";;; Do not edit! File generated at %s\n"
                           (current-time-string)))))
     ;; Normal case.
-    (unless (file-exists-p (concat directory "/" ".yas-skip"))
+    (unless (file-exists-p (expand-file-name ".yas-skip" directory))
       (unless (and (load (expand-file-name ".yas-compiled-snippets" directory) 'noerror (<= yas-verbosity 3))
-                   (progn (yas--message 2 "Loaded compiled snippets from %s" directory) t))
-        (yas--message 2 "Loading snippet files from %s" directory)
+                   (progn (yas--message 4 "Loaded compiled snippets from %s" directory) t))
+        (yas--message 4 "Loading snippet files from %s" directory)
         (yas--load-directory-2 directory mode-sym)))))
 
 (defun yas--load-directory-2 (directory mode-sym)
@@ -1786,7 +1782,10 @@
     (with-temp-buffer
       (dolist (file (yas--subdirs directory 'no-subdirs-just-files))
         (when (file-readable-p file)
-          (insert-file-contents file nil nil nil t)
+          ;; Erase the buffer instead of passing non-nil REPLACE to
+          ;; `insert-file-contents' (avoids Emacs bug #23659).
+          (erase-buffer)
+          (insert-file-contents file)
           (push (yas--parse-template file)
                 snippet-defs))))
     (when snippet-defs
@@ -1810,10 +1809,10 @@
         (cond ((file-directory-p directory)
                (yas-load-directory directory (not nojit))
                (if nojit
-                   (yas--message 3 "Loaded %s" directory)
-                 (yas--message 3 "Prepared just-in-time loading for %s" directory)))
+                   (yas--message 4 "Loaded %s" directory)
+                 (yas--message 4 "Prepared just-in-time loading for %s" directory)))
               (t
-               (push (yas--message 0 "Check your `yas-snippet-dirs': %s is not a directory" directory) errors)))))
+               (push (yas--message 1 "Check your `yas-snippet-dirs': %s is not a directory" directory) errors)))))
     errors))
 
 (defun yas-reload-all (&optional no-jit interactive)
@@ -1829,9 +1828,10 @@
   (catch 'abort
     (let ((errors)
           (snippet-editing-buffers
-           (remove-if-not #'(lambda (buffer)
-                              (with-current-buffer buffer yas--editing-template))
-                          (buffer-list))))
+           (cl-remove-if-not (lambda (buffer)
+                               (with-current-buffer buffer
+                                 yas--editing-template))
+                             (buffer-list))))
       ;; Warn if there are buffers visiting snippets, since reloading will break
       ;; any on-line editing of those buffers.
       ;;
@@ -1876,9 +1876,9 @@
       (yas-direct-keymaps-reload)
 
       (run-hooks 'yas-after-reload-hook)
-      (yas--message 3 "Reloaded everything%s...%s."
-                   (if no-jit "" " (snippets will load just-in-time)")
-                   (if errors " (some errors, check *Messages*)" "")))))
+      (yas--message (if errors 2 3) "Reloaded everything%s...%s."
+                    (if no-jit "" " (snippets will load just-in-time)")
+                    (if errors " (some errors, check *Messages*)" "")))))
 
 (defvar yas-after-reload-hook nil
   "Hooks run after `yas-reload-all'.")
@@ -1888,22 +1888,15 @@
     (let ((funs (reverse (gethash mode yas--scheduled-jit-loads))))
       ;; must reverse to maintain coherence with `yas-snippet-dirs'
       (dolist (fun funs)
-        (yas--message  3 "Loading for `%s', just-in-time: %s!" mode fun)
+        (yas--message 4 "Loading for `%s', just-in-time: %s!" mode fun)
         (funcall fun))
       (remhash mode yas--scheduled-jit-loads))))
 
-;; (when (<= emacs-major-version 22)
-;;   (add-hook 'after-change-major-mode-hook 'yas--load-pending-jits))
-
-(defun yas--quote-string (string)
-  "Escape and quote STRING.
-foo\"bar\\! -> \"foo\\\"bar\\\\!\""
-  (concat "\""
-          (replace-regexp-in-string "[\\\"]"
-                                    "\\\\\\&"
-                                    string
-                                    t)
-          "\""))
+(defun yas-escape-text (text)
+  "Escape TEXT for snippet."
+  (when text
+    (replace-regexp-in-string "[\\$]" "\\\\\\&" text)))
+
 
 ;;; Snippet compilation function
 
@@ -1944,7 +1937,7 @@
 
 ;;; Apropos snippet menu:
 ;;
-;; The snippet menu keymaps are store by mode in hash table called
+;; The snippet menu keymaps are stored by mode in hash table called
 ;; `yas--menu-table'. They are linked to the main menu in
 ;; `yas--menu-keymap-get-create' and are initially created empty,
 ;; reflecting the table hierarchy.
@@ -1966,9 +1959,9 @@
 ;;   duplicate entries. The `yas--template' objects are created in
 ;;   `yas-define-menu', holding nothing but the menu entry,
 ;;   represented by a pair of ((menu-item NAME :keys KEYS) TYPE) and
-;;   stored in `yas--template-menu-binding-pair'. The (menu-item ...)
+;;   stored in `yas--template-menu-binding-pair'.  The (menu-item ...)
 ;;   part is then stored in the menu keymap itself which make the item
-;;   appear to the user. These limitations could probably be revised.
+;;   appear to the user.  These limitations could probably be revised.
 ;;
 ;; * The `yas--template-perm-group' slot is only used in
 ;;   `yas-describe-tables'.
@@ -1995,10 +1988,9 @@
 
 (defun yas--show-menu-p (mode)
   (cond ((eq yas-use-menu 'abbreviate)
-         (find mode
-               (mapcar #'(lambda (table)
-                           (yas--table-mode table))
-                       (yas--get-snippet-tables))))
+         (cl-find mode
+                  (mapcar #'yas--table-mode
+                          (yas--get-snippet-tables))))
         (yas-use-menu t)))
 
 (defun yas--delete-from-keymap (keymap uuid)
@@ -2012,19 +2004,19 @@
   ;;
   (mapc #'(lambda (item)
             (when (and (listp (cdr item))
-                       (keymapp (third (cdr item))))
-              (yas--delete-from-keymap (third (cdr item)) uuid)))
-        (rest keymap))
+                       (keymapp (nth 2 (cdr item))))
+              (yas--delete-from-keymap (nth 2 (cdr item)) uuid)))
+        (cdr keymap))
   ;; Set the uuid entry to nil
   ;;
   (define-key keymap (vector (make-symbol uuid)) nil)
   ;; Destructively modify keymap
   ;;
-  (setcdr keymap (delete-if #'(lambda (item)
-                                (or (null (cdr item))
-                                    (and (keymapp (third (cdr item)))
-                                         (null (cdr (third (cdr item)))))))
-                            (rest keymap))))
+  (setcdr keymap (cl-delete-if (lambda (item)
+                                 (or (null (cdr item))
+                                     (and (keymapp (nth 2 (cdr item)))
+                                          (null (cdr (nth 2 (cdr item)))))))
+                               (cdr keymap))))
 
 (defun yas-define-menu (mode menu &optional omit-items)
   "Define a snippet menu for MODE according to MENU, omitting OMIT-ITEMS.
@@ -2041,7 +2033,7 @@
   SUBMENU has the same form as MENU.  NAME is also added to the
   list of groups of the snippets defined thereafter.
 
-OMIT-ITEMS is a list of snippet uuid's that will always be
+OMIT-ITEMS is a list of snippet uuids that will always be
 omitted from MODE's menu, even if they're manually loaded."
   (let* ((table (yas--table-get-create mode))
          (hash (yas--table-uuidhash table)))
@@ -2059,31 +2051,37 @@
 
 (defun yas--define-menu-1 (table menu-keymap menu uuidhash &optional group-list)
   "Helper for `yas-define-menu'."
-  (dolist (e (reverse menu))
-    (cond ((eq (first e) 'yas-item)
-           (let ((template (or (gethash (second e) uuidhash)
-                               (puthash (second e)
-                                        (yas--make-template
-                                         :table table
-                                         :perm-group group-list
-                                         :uuid (second e))
-                                        uuidhash))))
-             (define-key menu-keymap (vector (gensym))
-               (car (yas--template-menu-binding-pair-get-create template :stay)))))
-          ((eq (first e) 'yas-submenu)
-           (let ((subkeymap (make-sparse-keymap)))
-             (define-key menu-keymap (vector (gensym))
-               `(menu-item ,(second e) ,subkeymap))
-             (yas--define-menu-1 table
-                                subkeymap
-                                (third e)
-                                uuidhash
-                                (append group-list (list (second e))))))
-          ((eq (first e) 'yas-separator)
-           (define-key menu-keymap (vector (gensym))
-             '(menu-item "----")))
-          (t
-           (yas--message 3 "Don't know anything about menu entry %s" (first e))))))
+  (cl-loop
+   for (type name submenu) in (reverse menu)
+   if (or (eq type 'yas-item)
+          (and yas-alias-to-yas/prefix-p
+               (eq type 'yas/item)))
+   do (let ((template (or (gethash name uuidhash)
+                          (puthash name
+                                   (yas--make-template
+                                    :table table
+                                    :perm-group group-list
+                                    :uuid name)
+                                   uuidhash))))
+        (define-key menu-keymap (vector (cl-gensym))
+          (car (yas--template-menu-binding-pair-get-create template :stay))))
+   else if (or (eq type 'yas-submenu)
+               (and yas-alias-to-yas/prefix-p
+                    (eq type 'yas/submenu)))
+   do (let ((subkeymap (make-sparse-keymap)))
+        (define-key menu-keymap (vector (cl-gensym))
+          `(menu-item ,name ,subkeymap))
+        (yas--define-menu-1 table
+                            subkeymap
+                            submenu
+                            uuidhash
+                            (append group-list (list name))))
+   else if (or (eq type 'yas-separator)
+               (and yas-alias-to-yas/prefix-p
+                    (eq type 'yas/separator)))
+   do (define-key menu-keymap (vector (cl-gensym))
+        '(menu-item "----"))
+   else do (yas--message 1 "Don't know anything about menu entry %s" type)))
 
 (defun yas--define (mode key template &optional name condition group)
   "Define a snippet.  Expanding KEY into TEMPLATE.
@@ -2157,9 +2155,13 @@
                                     (yas--templates-for-key-at-point))
                                 (yas--templates-for-key-at-point))))
     (if templates-and-pos
-        (yas--expand-or-prompt-for-template (first templates-and-pos)
-                                            (second templates-and-pos)
-                                            (third templates-and-pos))
+        (yas--expand-or-prompt-for-template
+         (nth 0 templates-and-pos)
+         ;; Delete snippet key and active region when expanding.
+         (min (if (use-region-p) (region-beginning) most-positive-fixnum)
+              (nth 1 templates-and-pos))
+         (max (if (use-region-p) (region-end) most-negative-fixnum)
+              (nth 2 templates-and-pos)))
       (yas--fallback))))
 
 (defun yas-expand-from-keymap ()
@@ -2168,12 +2170,13 @@
 If expansion fails, execute the previous binding for this key"
   (interactive)
   (setq yas--condition-cache-timestamp (current-time))
-  (let* ((vec (subseq (this-command-keys-vector) (if current-prefix-arg
-                                                     (length (this-command-keys))
-                                                   0)))
-         (templates (mapcan #'(lambda (table)
-                                (yas--fetch table vec))
-                            (yas--get-snippet-tables))))
+  (let* ((vec (cl-subseq (this-command-keys-vector)
+                         (if current-prefix-arg
+                             (length (this-command-keys))
+                           0)))
+         (templates (cl-mapcan (lambda (table)
+                                 (yas--fetch table vec))
+                               (yas--get-snippet-tables))))
     (if templates
         (yas--expand-or-prompt-for-template templates)
       (let ((yas-fallback-behavior 'call-other-command))
@@ -2185,7 +2188,7 @@
 Prompt the user if TEMPLATES has more than one element, else
 expand immediately.  Common gateway for
 `yas-expand-from-trigger-key' and `yas-expand-from-keymap'."
-  (let ((yas--current-template (or (and (rest templates) ;; more than one
+  (let ((yas--current-template (or (and (cl-rest templates) ;; more than one
                                         (yas--prompt-for-template (mapcar #'cdr templates)))
                                    (cdar templates))))
     (when yas--current-template
@@ -2223,7 +2226,7 @@
                 (yas-minor-mode nil)
                 (beyond-yasnippet (yas--keybinding-beyond-yasnippet)))
            (yas--message 4 "Falling back to %s"  beyond-yasnippet)
-           (assert (or (null beyond-yasnippet) (commandp beyond-yasnippet)))
+           (cl-assert (or (null beyond-yasnippet) (commandp beyond-yasnippet)))
            (setq this-command beyond-yasnippet)
            (when beyond-yasnippet
              (call-interactively beyond-yasnippet))))
@@ -2288,13 +2291,13 @@
   (mapcar #'cdr
           (if yas-choose-keys-first
               (let ((key (yas--prompt-for-keys
-                          (mapcan #'yas--table-all-keys tables))))
+                          (cl-mapcan #'yas--table-all-keys tables))))
                 (when key
-                  (mapcan #'(lambda (table)
-                              (yas--fetch table key))
-                          tables)))
-            (remove-duplicates (mapcan #'yas--table-templates tables)
-                               :test #'equal))))
+                  (cl-mapcan (lambda (table)
+                               (yas--fetch table key))
+                             tables)))
+            (cl-remove-duplicates (cl-mapcan #'yas--table-templates tables)
+                                  :test #'equal))))
 
 (defun yas--lookup-snippet-1 (name mode)
   "Get the snippet called NAME in MODE's tables."
@@ -2331,7 +2334,7 @@
                                          yas-buffer-local-condition))
          (templates (yas--all-templates (yas--get-snippet-tables)))
          (yas--current-template (and templates
-                                    (or (and (rest templates) ;; more than one template for same key
+                                    (or (and (cl-rest templates) ;; more than one template for same key
                                              (yas--prompt-for-template templates))
                                         (car templates))))
          (where (if (region-active-p)
@@ -2342,7 +2345,7 @@
                             (car where)
                             (cdr where)
                             (yas--template-expand-env yas--current-template))
-      (yas--message 3 "No snippets can be inserted here!"))))
+      (yas--message 1 "No snippets can be inserted here!"))))
 
 (defun yas-visit-snippet-file ()
   "Choose a snippet to edit, selection like `yas-insert-snippet'.
@@ -2389,15 +2392,15 @@
                          (pp-to-string (yas--template-content template))
                        (yas--template-content template))))
            (snippet-mode)
-           (set (make-local-variable 'yas--editing-template) template)))))
+           (set (make-local-variable 'yas--editing-template) template)
+           (set (make-local-variable 'default-directory)
+                (car (cdr (car (yas--guess-snippet-directories (yas--template-table template))))))))))
 
 (defun yas--guess-snippet-directories-1 (table)
   "Guess possible snippet subdirectories for TABLE."
-  (cons (yas--table-name table)
-        (mapcan #'(lambda (parent)
-                    (yas--guess-snippet-directories-1
-                     parent))
-                (yas--table-parents table))))
+  (cons (file-name-as-directory (yas--table-name table))
+        (cl-mapcan #'yas--guess-snippet-directories-1
+                   (yas--table-parents table))))
 
 (defun yas--guess-snippet-directories (&optional table)
   "Try to guess suitable directories based on the current active
@@ -2406,13 +2409,11 @@
 Returns a list of elements (TABLE . DIRS) where TABLE is a
 `yas--table' object and DIRS is a list of all possible directories
 where snippets of table might exist."
-  (let ((main-dir (replace-regexp-in-string
-                   "/+$" ""
-                   (or (first (or (yas-snippet-dirs)
-                                  (setq yas-snippet-dirs (list yas--default-user-snippets-dir)))))))
-        (tables (or (and table
-                         (list table))
-                    (yas--get-snippet-tables))))
+  (let ((main-dir (car (or (yas-snippet-dirs)
+                           (setq yas-snippet-dirs
+                                 (list yas--default-user-snippets-dir)))))
+        (tables (if table (list table)
+                  (yas--get-snippet-tables))))
     ;; HACK! the snippet table created here is actually registered!
     ;;
     (unless (or table (gethash major-mode yas--tables))
@@ -2422,14 +2423,15 @@
     (mapcar #'(lambda (table)
                 (cons table
                       (mapcar #'(lambda (subdir)
-                                  (concat main-dir "/" subdir))
+                                  (expand-file-name subdir main-dir))
                               (yas--guess-snippet-directories-1 table))))
             tables)))
 
 (defun yas--make-directory-maybe (table-and-dirs &optional main-table-string)
   "Return a dir inside TABLE-AND-DIRS, prompts for creation if none exists."
-  (or (some #'(lambda (dir) (when (file-directory-p dir) dir)) (cdr table-and-dirs))
-      (let ((candidate (first (cdr table-and-dirs))))
+  (or (cl-some (lambda (dir) (when (file-directory-p dir) dir))
+               (cdr table-and-dirs))
+      (let ((candidate (cl-first (cdr table-and-dirs))))
         (unless (file-writable-p (file-name-directory candidate))
           (error (yas--format "%s is not writable." candidate)))
         (if (y-or-n-p (format "Guessed directory (%s) for%s%s table \"%s\" does not exist! Create? "
@@ -2452,16 +2454,22 @@
 Expands a snippet-writing snippet, unless the optional prefix arg
 NO-TEMPLATE is non-nil."
   (interactive "P")
-  (let ((guessed-directories (yas--guess-snippet-directories)))
+  (let ((guessed-directories (yas--guess-snippet-directories))
+        (yas-selected-text (or yas-selected-text
+                               (and (region-active-p)
+                                    (buffer-substring-no-properties
+                                     (region-beginning) (region-end))))))
 
     (switch-to-buffer "*new snippet*")
     (erase-buffer)
     (kill-all-local-variables)
     (snippet-mode)
     (yas-minor-mode 1)
-    (set (make-local-variable 'yas--guessed-modes) (mapcar #'(lambda (d)
-                                                              (yas--table-mode (car d)))
-                                                          guessed-directories))
+    (set (make-local-variable 'yas--guessed-modes)
+         (mapcar (lambda (d) (yas--table-mode (car d)))
+                 guessed-directories))
+    (set (make-local-variable 'default-directory)
+         (car (cdr (car guessed-directories))))
     (if (and (not no-template) yas-new-snippet-default)
         (yas-expand-snippet yas-new-snippet-default))))
 
@@ -2474,12 +2482,13 @@
 Note that MODE-SYM need not be the symbol of a real major mode,
 neither do the elements of PARENTS."
   (let* ((file-dir (and file
-                        (directory-file-name (or (some #'(lambda (special)
-                                                           (locate-dominating-file file special))
-                                                       '(".yas-setup.el"
-                                                         ".yas-make-groups"
-                                                         ".yas-parents"))
-                                                 (directory-file-name (file-name-directory file))))))
+                        (directory-file-name
+                         (or (cl-some (lambda (special)
+                                        (locate-dominating-file file special))
+                                      '(".yas-setup.el"
+                                        ".yas-make-groups"
+                                        ".yas-parents"))
+                             (directory-file-name (file-name-directory file))))))
          (parents-file-name (concat file-dir "/.yas-parents"))
          (major-mode-name (and file-dir
                                (file-name-nondirectory file-dir)))
@@ -2515,22 +2524,21 @@
     (intern
      (funcall prompt (format "Choose or enter a table (yas guesses %s): "
                              (if yas--guessed-modes
-                                 (first yas--guessed-modes)
+                                 (cl-first yas--guessed-modes)
                                "nothing"))
               (mapcar #'symbol-name yas--guessed-modes)
               nil
               nil
               nil
               nil
-              (if (first yas--guessed-modes)
-                  (symbol-name (first yas--guessed-modes)))))))
+              (if (cl-first yas--guessed-modes)
+                  (symbol-name (cl-first yas--guessed-modes)))))))
 
 (defun yas-load-snippet-buffer (table &optional interactive)
   "Parse and load current buffer's snippet definition into TABLE.
-
-TABLE is a symbol naming a passed to `yas--table-get-create'.
-
-When called interactively, prompt for the table name."
+TABLE is a symbol name passed to `yas--table-get-create'.  When
+called interactively, prompt for the table name.
+Return the `yas--template' object created"
   (interactive (list (yas--read-table) t))
   (cond
    ;;  We have `yas--editing-template', this buffer's content comes from a
@@ -2552,44 +2560,49 @@
   (when interactive
     (yas--message 3 "Snippet \"%s\" loaded for %s."
                   (yas--template-name yas--editing-template)
-                  (yas--table-name (yas--template-table yas--editing-template)))))
+                  (yas--table-name (yas--template-table yas--editing-template))))
+  yas--editing-template)
+
+(defun yas-maybe-load-snippet-buffer ()
+  "Added to `after-save-hook' in `snippet-mode'."
+  (let* ((mode (intern (file-name-sans-extension
+                        (file-name-nondirectory
+                         (directory-file-name default-directory)))))
+         (current-snippet
+          (apply #'yas--define-snippets-2 (yas--table-get-create mode)
+                 (yas--parse-template buffer-file-name)))
+         (uuid (yas--template-uuid current-snippet)))
+    (unless (equal current-snippet
+                   (if uuid (yas--get-template-by-uuid mode uuid)
+                     (yas--lookup-snippet-1
+                      (yas--template-name current-snippet) mode)))
+      (yas-load-snippet-buffer mode t))))
 
 (defun yas-load-snippet-buffer-and-close (table &optional kill)
-  "Load the snippet with `yas-load-snippet-buffer', possibly
-  save, then `quit-window' if saved.
-
-If the snippet is new, ask the user whether (and where) to save
-it. If the snippet already has a file, just save it.
+  "Load and save the snippet, then `quit-window' if saved.
+Loading is performed by `yas-load-snippet-buffer'.  If the
+snippet is new, ask the user whether (and where) to save it.  If
+the snippet already has a file, just save it.
 
 The prefix argument KILL is passed to `quit-window'.
 
 Don't use this from a Lisp program, call `yas-load-snippet-buffer'
 and `kill-buffer' instead."
   (interactive (list (yas--read-table) current-prefix-arg))
-  (yas-load-snippet-buffer table t)
-  (let ((file (yas--template-get-file yas--editing-template)))
-    (when (and (or
-                ;; Only offer to save this if it looks like a library or new
-                ;; snippet (loaded from elisp, from a dir in `yas-snippet-dirs'
-                ;; which is not the first, or from an unwritable file)
-                ;;
-                (not file)
-                (not (file-writable-p file))
-                (and (cdr-safe yas-snippet-dirs)
-                     (not (string-prefix-p (expand-file-name (car yas-snippet-dirs)) file))))
-               (y-or-n-p (yas--format "Looks like a library or new snippet. Save to new file? ")))
-      (let* ((option (first (yas--guess-snippet-directories (yas--template-table yas--editing-template))))
-             (chosen (and option
-                          (yas--make-directory-maybe option))))
-        (when chosen
-          (let ((default-file-name (or (and file (file-name-nondirectory file))
-                                       (yas--template-name yas--editing-template))))
-            (write-file (concat chosen "/"
-                                (read-from-minibuffer (format "File name to create in %s? " chosen)
-                                                      default-file-name)))
-            (setf (yas--template-load-file yas--editing-template) buffer-file-name))))))
-  (when buffer-file-name
-    (save-buffer)
+  (let ((template (yas-load-snippet-buffer table t)))
+    (when (and (buffer-modified-p)
+               (y-or-n-p
+                (format "[yas] Loaded for %s. Also save snippet buffer?"
+                        (yas--table-name (yas--template-table template)))))
+      (let ((default-directory (car (cdr (car (yas--guess-snippet-directories
+                                               (yas--template-table template))))))
+            (default-file-name (yas--template-name template)))
+        (unless (or buffer-file-name (not default-file-name))
+          (setq buffer-file-name
+                (read-file-name "File to save snippet in: "
+                                nil nil nil default-file-name))
+          (rename-buffer (file-name-nondirectory buffer-file-name) t))
+        (save-buffer)))
     (quit-window kill)))
 
 (defun yas-tryout-snippet (&optional debug)
@@ -2600,16 +2613,16 @@
          (test-mode (or (and (car major-mode-and-parent)
                              (fboundp (car major-mode-and-parent))
                              (car major-mode-and-parent))
-                        (first yas--guessed-modes)
+                        (cl-first yas--guessed-modes)
                         (intern (read-from-minibuffer (yas--format "Please input a mode: ")))))
          (yas--current-template
           (and parsed
                (fboundp test-mode)
                (yas--make-template :table       nil ;; no tables for ephemeral snippets
-                                   :key         (first parsed)
-                                   :content     (second parsed)
-                                   :name        (third parsed)
-                                   :expand-env  (sixth parsed)))))
+                                   :key         (nth 0 parsed)
+                                   :content     (nth 1 parsed)
+                                   :name        (nth 2 parsed)
+                                   :expand-env  (nth 5 parsed)))))
     (cond (yas--current-template
            (let ((buffer-name (format "*testing snippet: %s*" (yas--template-name yas--current-template))))
              (kill-buffer (get-buffer-create buffer-name))
@@ -2623,73 +2636,66 @@
                                  (point-max)
                                  (yas--template-expand-env yas--current-template))
              (when (and debug
-                        (require 'yasnippet-debug nil t))
-               (add-hook 'post-command-hook 'yas-debug-snippet-vars nil t))))
+                        (require 'yasnippet-debug nil t)
+                        (fboundp 'yas-debug-snippet-vars))
+               (add-hook 'post-command-hook #'yas-debug-snippet-vars nil t))))
           (t
-           (yas--message 3 "Cannot test snippet for unknown major mode")))))
+           (yas--message 1 "Cannot test snippet for unknown major mode")))))
 
 (defun yas-active-keys ()
   "Return all active trigger keys for current buffer and point."
-  (remove-duplicates
-   (remove-if-not #'stringp (mapcan #'yas--table-all-keys (yas--get-snippet-tables)))
+  (cl-remove-duplicates
+   (cl-remove-if-not #'stringp (cl-mapcan #'yas--table-all-keys
+                                          (yas--get-snippet-tables)))
    :test #'string=))
 
 (defun yas--template-fine-group (template)
   (car (last (or (yas--template-group template)
                  (yas--template-perm-group template)))))
 
-(defun yas-describe-tables (&optional choose)
+(defun yas-describe-table-by-namehash ()
+  "Display snippet tables by NAMEHASH."
+  (interactive)
+  (with-current-buffer (get-buffer-create "*YASnippet Tables by NAMEHASH*")
+    (let ((inhibit-read-only t))
+      (erase-buffer)
+      (insert "YASnippet tables by NAMEHASH: \n")
+      (maphash
+       (lambda (_mode table)
+         (insert (format "\nSnippet table `%s':\n\n" (yas--table-name table)))
+         (maphash
+          (lambda (key _v)
+            (insert (format "   key %s maps snippets: %s\n" key
+                            (let ((names))
+                              (maphash #'(lambda (k _v)
+                                           (push k names))
+                                       (gethash key (yas--table-hash table)))
+                              names))))
+          (yas--table-hash table)))
+       yas--tables))
+    (view-mode +1)
+    (goto-char 1)
+    (display-buffer (current-buffer))))
+
+(defun yas-describe-tables (&optional with-nonactive)
   "Display snippets for each table."
   (interactive "P")
-  (let* ((by-name-hash (and choose
-                            (y-or-n-p "Show by namehash? ")))
-         (buffer (get-buffer-create "*YASnippet tables*"))
-         (active-tables (yas--get-snippet-tables))
-         (remain-tables (let ((all))
-                          (maphash #'(lambda (_k v)
-                                       (unless (find v active-tables)
-                                         (push v all)))
-                                   yas--tables)
-                          all))
-         (table-lists (list active-tables remain-tables))
-         (original-buffer (current-buffer))
-         (continue t)
-         (yas--condition-cache-timestamp (current-time)))
-    (with-current-buffer buffer
-      (setq buffer-read-only nil)
-      (erase-buffer)
-      (cond ((not by-name-hash)
-             (insert "YASnippet tables:\n")
-             (while (and table-lists
-                         continue)
-               (dolist (table (car table-lists))
-                 (yas--describe-pretty-table table original-buffer))
-               (setq table-lists (cdr table-lists))
-               (when table-lists
-                 (yas--create-snippet-xrefs)
-                 (display-buffer buffer)
-                 (setq continue (and choose (y-or-n-p "Show also non-active tables? ")))))
-             (yas--create-snippet-xrefs)
-             (help-mode)
-             (goto-char 1))
-            (t
-             (insert "\n\nYASnippet tables by NAMEHASH: \n")
-             (dolist (table (append active-tables remain-tables))
-               (insert (format "\nSnippet table `%s':\n\n" (yas--table-name table)))
-               (let ((keys))
-                 (maphash #'(lambda (k _v)
-                              (push k keys))
-                          (yas--table-hash table))
-                 (dolist (key keys)
-                   (insert (format "   key %s maps snippets: %s\n" key
-                                   (let ((names))
-                                     (maphash #'(lambda (k _v)
-                                                  (push k names))
-                                              (gethash key (yas--table-hash table)))
-                                     names))))))))
-      (goto-char 1)
-      (setq buffer-read-only t))
-    (display-buffer buffer)))
+  (let ((original-buffer (current-buffer))
+        (tables (yas--get-snippet-tables)))
+   (with-current-buffer (get-buffer-create "*YASnippet Tables*")
+     (let ((inhibit-read-only t))
+       (when with-nonactive
+         (maphash #'(lambda (_k v)
+                      (cl-pushnew v tables))
+                  yas--tables))
+       (erase-buffer)
+       (insert "YASnippet tables:\n")
+       (dolist (table tables)
+         (yas--describe-pretty-table table original-buffer))
+       (yas--create-snippet-xrefs))
+     (help-mode)
+     (goto-char 1)
+     (display-buffer (current-buffer)))))
 
 (defun yas--describe-pretty-table (table &optional original-buffer)
   (insert (format "\nSnippet table `%s'"
@@ -2805,16 +2811,16 @@
       (when (listp last-elem)
         (setcar last-link (car last-elem))
         (setcdr last-link (cdr last-elem))))
-    (some #'(lambda (fn)
-              (funcall fn "Choose: " possibilities))
-          yas-prompt-functions)))
+    (cl-some (lambda (fn)
+               (funcall fn "Choose: " possibilities))
+             yas-prompt-functions)))
 
 (defun yas-key-to-value (alist)
   (unless (or yas-moving-away-p
               yas-modified-p)
     (let ((key (read-key-sequence "")))
       (when (stringp key)
-        (or (cdr (find key alist :key #'car :test #'string=))
+        (or (cdr (cl-find key alist :key #'car :test #'string=))
             key)))))
 
 (defun yas-throw (text)
@@ -2825,7 +2831,8 @@
   "Verify that the current field value is in POSSIBILITIES.
 
 Otherwise throw exception."
-  (when (and yas-moving-away-p (notany #'(lambda (pos) (string= pos yas-text)) possibilities))
+  (when (and yas-moving-away-p
+             (cl-notany (lambda (pos) (string= pos yas-text)) possibilities))
     (yas-throw (yas--format "Field only allows %s" possibilities))))
 
 (defun yas-field-value (number)
@@ -2892,7 +2899,7 @@
 (put 'yas--active-field-overlay 'permanent-local t)
 (put 'yas--field-protection-overlays 'permanent-local t)
 
-(defstruct (yas--snippet (:constructor yas--make-snippet ()))
+(cl-defstruct (yas--snippet (:constructor yas--make-snippet ()))
   "A snippet.
 
 ..."
@@ -2906,7 +2913,7 @@
   previous-active-field
   force-exit)
 
-(defstruct (yas--field (:constructor yas--make-field (number start end parent-field)))
+(cl-defstruct (yas--field (:constructor yas--make-field (number start end parent-field)))
   "A field.
 
 NUMBER is the field number.
@@ -2926,7 +2933,7 @@
   next)
 
 
-(defstruct (yas--mirror (:constructor yas--make-mirror (start end transform)))
+(cl-defstruct (yas--mirror (:constructor yas--make-mirror (start end transform)))
   "A mirror.
 
 START and END are mostly buffer markers, but see \"apropos markers-to-points\".
@@ -2940,7 +2947,7 @@
   next
   depth)
 
-(defstruct (yas--exit (:constructor yas--make-exit (marker)))
+(cl-defstruct (yas--exit (:constructor yas--make-exit (marker)))
   marker
   next)
 
@@ -2953,7 +2960,6 @@
 string iff EMPTY-ON-NIL-P is true."
   (let* ((yas-text (yas--field-text-for-display field))
          (yas-modified-p (yas--field-modified-p field))
-         (yas-moving-away-p nil)
          (transform (if (yas--mirror-p field-or-mirror)
                         (yas--mirror-transform field-or-mirror)
                       (yas--field-transform field-or-mirror)))
@@ -2978,9 +2984,9 @@
       (replace-match to t t text))))
 
 (defun yas--snippet-find-field (snippet number)
-  (find-if #'(lambda (field)
-               (eq number (yas--field-number field)))
-           (yas--snippet-fields snippet)))
+  (cl-find-if (lambda (field)
+                (eq number (yas--field-number field)))
+              (yas--snippet-fields snippet)))
 
 (defun yas--snippet-sort-fields (snippet)
   "Sort the fields of SNIPPET in navigation order."
@@ -3056,38 +3062,40 @@
             (yas-next-field))))
     (yas-next-field)))
 
+(defun yas-next-field-will-exit-p (&optional arg)
+  "Return non-nil if (yas-next-field ARG) would exit the current snippet."
+  (let ((snippet (car (yas--snippets-at-point)))
+        (active (overlay-get yas--active-field-overlay 'yas--field)))
+    (when snippet
+      (not (yas--find-next-field arg snippet active)))))
+
+(defun yas--find-next-field (n snippet active)
+  "Return the Nth field after the ACTIVE one in SNIPPET."
+  (let ((live-fields (cl-remove-if
+                      (lambda (field)
+                        (and (not (eq field active))
+                             (yas--field-probably-deleted-p snippet field)))
+                      (yas--snippet-fields snippet))))
+    (nth (abs n) (memq active (if (>= n 0) live-fields (reverse live-fields))))))
+
 (defun yas-next-field (&optional arg)
   "Navigate to the ARGth next field.
 
 If there's none, exit the snippet."
   (interactive)
-  (let* ((arg (or arg
-                  1))
-         (snippet (first (yas--snippets-at-point)))
+  (unless arg (setq arg 1))
+  (let* ((snippet (car (yas--snippets-at-point)))
          (active-field (overlay-get yas--active-field-overlay 'yas--field))
-         (live-fields (remove-if #'(lambda (field)
-                                     (and (not (eq field active-field))
-                                          (yas--field-probably-deleted-p snippet field)))
-                                 (yas--snippet-fields snippet)))
-         (active-field-pos (position active-field live-fields))
-         (target-pos (and active-field-pos (+ arg active-field-pos)))
-         (target-field (and target-pos (nth target-pos live-fields))))
-    ;; First check if we're moving out of a field with a transform
-    ;;
-    (when (and active-field
-               (yas--field-transform active-field))
-      (let* ((yas-moving-away-p t)
-             (yas-text (yas--field-text-for-display active-field))
-             (yas-modified-p (yas--field-modified-p active-field)))
-        ;; primary field transform: exit call to field-transform
-        (yas--eval-lisp (yas--field-transform active-field))))
+         (target-field (yas--find-next-field arg snippet active-field)))
+    ;; Apply transform to active field.
+    (when active-field
+      (let ((yas-moving-away-p t))
+        (when (yas--field-update-display active-field)
+          (yas--update-mirrors snippet))))
     ;; Now actually move...
-    (cond ((and target-pos (>= target-pos (length live-fields)))
-           (yas-exit-snippet snippet))
-          (target-field
-           (yas--move-to-field snippet target-field))
-          (t
-           nil))))
+    (if target-field
+        (yas--move-to-field snippet target-field)
+      (yas-exit-snippet snippet))))
 
 (defun yas--place-overlays (snippet field)
   "Correctly place overlays for SNIPPET's FIELD."
@@ -3131,7 +3139,7 @@
 
 (defun yas-exit-snippet (snippet)
   "Goto exit-marker of SNIPPET."
-  (interactive (list (first (yas--snippets-at-point))))
+  (interactive (list (cl-first (yas--snippets-at-point))))
   (when snippet
     (setf (yas--snippet-force-exit snippet) t)
     (goto-char (if (yas--snippet-exit snippet)
@@ -3198,13 +3206,13 @@
       ;; again from `yas--take-care-of-redo'....
       (setf (yas--snippet-fields snippet) nil)))
 
-  (yas--message 3 "Snippet %s exited." (yas--snippet-id snippet)))
+  (yas--message 4 "Snippet %s exited." (yas--snippet-id snippet)))
 
 (defun yas--safely-run-hooks (hook-var)
   (condition-case error
       (run-hooks hook-var)
     (error
-     (yas--message 3 "%s error: %s" hook-var (error-message-string error)))))
+     (yas--message 2 "%s error: %s" hook-var (error-message-string error)))))
 
 
 (defun yas--check-commit-snippet ()
@@ -3341,15 +3349,17 @@
           (t
            (call-interactively 'delete-char)))))
 
-(defun yas--skip-and-clear (field)
-  "Deletes the region of FIELD and sets it's modified state to t."
+(defun yas--skip-and-clear (field &optional from)
+  "Deletes the region of FIELD and sets it's modified state to t.
+If given, FROM indicates position to start at instead of FIELD's beginning."
   ;; Just before skipping-and-clearing the field, mark its children
   ;; fields as modified, too. If the children have mirrors-in-fields
   ;; this prevents them from updating erroneously (we're skipping and
   ;; deleting!).
   ;;
   (yas--mark-this-and-children-modified field)
-  (delete-region (yas--field-start field) (yas--field-end field)))
+  (unless (= (yas--field-start field) (yas--field-end field))
+    (delete-region (or from (yas--field-start field)) (yas--field-end field))))
 
 (defun yas--mark-this-and-children-modified (field)
   (setf (yas--field-modified-p field) t)
@@ -3383,40 +3393,34 @@
     (overlay-put yas--active-field-overlay 'insert-behind-hooks
                  '(yas--on-field-overlay-modification))))
 
-(defun yas--skip-and-clear-field-p (field _beg _end &optional _length)
+(defun yas--skip-and-clear-field-p (field beg _end length)
   "Tell if newly modified FIELD should be cleared and skipped.
 BEG, END and LENGTH like overlay modification hooks."
-  (and (not (yas--field-modified-p field))
-       (= (point) (yas--field-start field))
-       (require 'delsel)
-       ;; `yank' sets `this-command' to t during execution.
-       (let* ((command (if (commandp this-command) this-command
-                         this-original-command))
-              (clearp (if (symbolp command) (get command 'delete-selection))))
-         (when (and (not (memq clearp '(yank supersede kill)))
-                    (functionp clearp))
-           (setq clearp (funcall clearp)))
-         clearp)))
+  (and (= length 0) ; A 0 pre-change length indicates insertion.
+       (= beg (yas--field-start field)) ; Insertion at field start?
+       (not (yas--field-modified-p field))))
 
 (defun yas--on-field-overlay-modification (overlay after? beg end &optional length)
   "Clears the field and updates mirrors, conditionally.
 
 Only clears the field if it hasn't been modified and point is at
 field start.  This hook does nothing if an undo is in progress."
-  (unless (or yas--inhibit-overlay-hooks
+  (unless (or (not after?)
+              yas--inhibit-overlay-hooks
               (not (overlayp yas--active-field-overlay)) ; Avoid Emacs bug #21824.
               (yas--undo-in-progress))
-    (let* ((field (overlay-get overlay 'yas--field))
+    (let* ((inhibit-modification-hooks t)
+           (field (overlay-get overlay 'yas--field))
            (snippet (overlay-get yas--active-field-overlay 'yas--snippet)))
-      (cond (after?
-             (yas--advance-end-maybe field (overlay-end overlay))
-             (save-excursion
-               (yas--field-update-display field))
-             (yas--update-mirrors snippet))
-            (field
-             (when (yas--skip-and-clear-field-p field beg end)
-               (yas--skip-and-clear field))
-             (setf (yas--field-modified-p field) t))))))
+      (save-match-data
+        (when (yas--skip-and-clear-field-p field beg end length)
+          ;; We delete text starting from the END of insertion.
+          (yas--skip-and-clear field end))
+        (setf (yas--field-modified-p field) t)
+        (yas--advance-end-maybe field (overlay-end overlay))
+        (save-excursion
+          (yas--field-update-display field))
+        (yas--update-mirrors snippet)))))
 
 ;;; Apropos protection overlays:
 ;;
@@ -3447,9 +3451,10 @@
     ;; go on to normal overlay creation/moving
     ;;
     (cond ((and yas--field-protection-overlays
-                (every #'overlay-buffer yas--field-protection-overlays))
-           (move-overlay (first yas--field-protection-overlays) (1- start) start)
-           (move-overlay (second yas--field-protection-overlays) end (1+ end)))
+                (cl-every #'overlay-buffer yas--field-protection-overlays))
+           (move-overlay (nth 0 yas--field-protection-overlays)
+                         (1- start) start)
+           (move-overlay (nth 1 yas--field-protection-overlays) end (1+ end)))
           (t
            (setq yas--field-protection-overlays
                  (list (make-overlay (1- start) start nil t nil)
@@ -3460,15 +3465,14 @@
              ;; (overlay-put ov 'evaporate t)
              (overlay-put ov 'modification-hooks '(yas--on-protection-overlay-modification)))))))
 
-(defun yas--on-protection-overlay-modification (_overlay after? _beg _end &optional _length)
-  "Signals a snippet violation, then issues error.
-
-The error should be ignored in `debug-ignored-errors'"
+(defun yas--on-protection-overlay-modification (_overlay after? beg end &optional length)
+  "Commit the snippet if the protection overlay is being killed."
   (unless (or yas--inhibit-overlay-hooks
-              after?
+              (not after?)
+              (= length (- end beg)) ; deletion or insertion
               (yas--undo-in-progress))
     (let ((snippets (yas--snippets-at-point)))
-      (yas--message 3 "Comitting snippets. Action would destroy a protection overlay.")
+      (yas--message 2 "Committing snippets. Action would destroy a protection overlay.")
       (cl-loop for snippet in snippets
                do (yas--commit-snippet snippet)))))
 
@@ -3557,14 +3561,21 @@
              ;; them mostly to make the undo information
              ;;
              (setq yas--start-column (current-column))
-             (let ((yas--inhibit-overlay-hooks t))
+             (let ((yas--inhibit-overlay-hooks t)
+                   ;; Avoid major-mode's syntax propertizing function,
+                   ;; since we mess with the syntax-table and also
+                   ;; insert things that are not valid in the
+                   ;; major-mode language syntax anyway.
+                   (syntax-propertize-function nil))
                (setq snippet
                      (if expand-env
                          (eval `(let* ,expand-env
                                   (insert content)
                                   (yas--snippet-create start (point))))
                        (insert content)
-                       (yas--snippet-create start (point))))))
+                       (yas--snippet-create start (point)))))
+             ;; Invalidate any syntax-propertizing done while `syntax-propertize-function' was nil
+             (syntax-ppss-flush-cache start))
 
            ;; stacked-expansion: This checks for stacked expansion, save the
            ;; `yas--previous-active-field' and advance its boundary.
@@ -3604,7 +3615,7 @@
              (when first-field
                (sit-for 0) ;; fix issue 125
                (yas--move-to-field snippet first-field)))
-           (yas--message 3 "snippet expanded.")
+           (yas--message 4 "snippet expanded.")
            t))))
 
 (defun yas--take-care-of-redo (_beg _end snippet)
@@ -3745,7 +3756,7 @@
       (setq soup
             (sort soup compare-fom-begs))
       (when soup
-        (reduce link-foms soup)))))
+        (cl-reduce link-foms soup)))))
 
 (defun yas--calculate-mirrors-in-fields (snippet mirror)
   "Attempt to assign a parent field of SNIPPET to the mirror MIRROR.
@@ -3811,6 +3822,9 @@
 backquoted Lisp expressions should be inserted at the end of
 expansion.")
 
+(defvar yas--indent-markers nil
+  "List of markers for manual indentation.")
+
 (defun yas--snippet-parse-create (snippet)
   "Parse a recently inserted snippet template, creating all
 necessary fields, mirrors and exit points.
@@ -3830,6 +3844,9 @@
     ;; protect escaped characters
     ;;
     (yas--protect-escapes)
+    ;; Parse indent markers: `$>'.
+    (goto-char parse-start)
+    (yas--indent-parse-create)
     ;; parse fields with {}
     ;;
     (goto-char parse-start)
@@ -3847,7 +3864,22 @@
     (yas--calculate-adjacencies snippet)
     ;; Delete $-constructs
     ;;
-    (save-restriction (widen) (yas--delete-regions yas--dollar-regions))
+    (save-restriction
+      (widen)
+      (yas--delete-regions yas--dollar-regions))
+    ;; Make sure to do this insertion *after* deleting the dollar
+    ;; regions, otherwise we invalidate the calculated positions of
+    ;; all the fields following $0.
+    (let ((exit (yas--snippet-exit snippet)))
+      (goto-char (if exit (yas--exit-marker exit) (point-max))))
+    (when (eq yas-wrap-around-region 'cua)
+      (setq yas-wrap-around-region ?0))
+    (cond ((and yas-wrap-around-region yas-selected-text)
+           (insert yas-selected-text))
+          ((and (characterp yas-wrap-around-region)
+                (get-register yas-wrap-around-region))
+           (insert (prog1 (get-register yas-wrap-around-region)
+                     (set-register yas-wrap-around-region nil)))))
     ;; restore backquoted expression values
     ;;
     (yas--restore-backquotes)
@@ -3863,8 +3895,9 @@
     (goto-char parse-start)
     (yas--indent snippet)))
 
-(defun yas--indent-according-to-mode (snippet-markers)
-  "Indent current line according to mode, preserving SNIPPET-MARKERS."
+(defun yas--indent-region (from to snippet)
+  "Indent the lines between FROM and TO with `indent-according-to-mode'.
+The SNIPPET's markers are preserved."
   ;;; Apropos indenting problems....
   ;;
   ;; `indent-according-to-mode' uses whatever `indent-line-function'
@@ -3877,54 +3910,53 @@
   ;; `front-advance' property set to nil.
   ;;
   ;; This is why I have these `trouble-markers', they are the ones at
-  ;; they are the ones at the first non-whitespace char at the line
-  ;; (i.e. at `yas--real-line-beginning'. After indentation takes place
-  ;; we should be at the correct to restore them to. All other
-  ;; non-trouble-markers have been *pushed* and don't need special
-  ;; attention.
-  ;;
-  (goto-char (yas--real-line-beginning))
-  (let ((trouble-markers (remove-if-not #'(lambda (marker)
-                                            (= marker (point)))
-                                        snippet-markers)))
-    (save-restriction
-      (widen)
-      (condition-case _
-          (indent-according-to-mode)
-        (error (yas--message 3 "Warning: `yas--indent-according-to-mode' having problems running %s" indent-line-function)
-               nil)))
-    (mapc #'(lambda (marker)
-              (set-marker marker (point)))
-          trouble-markers)))
+  ;; the first non-whitespace char at the line.  After indentation
+  ;; takes place we should be at the correct to restore them.  All
+  ;; other non-trouble-markers should have been *pushed* and don't
+  ;; need special attention.
+  (let* ((snippet-markers (yas--collect-snippet-markers snippet))
+         (to (set-marker (make-marker) to)))
+    (save-excursion
+      (goto-char from)
+      (save-restriction
+        (widen)
+        ;; Indent each non-empty line.
+        (cl-loop if (/= (line-beginning-position) (line-end-position)) do
+                 (back-to-indentation)
+                 (let ((trouble-markers ; The markers at (point).
+                        (cl-remove (point) snippet-markers :test #'/=)))
+                   (unwind-protect
+                       (indent-according-to-mode)
+                     (dolist (marker trouble-markers)
+                       (set-marker marker (point)))))
+                 while (and (zerop (forward-line 1))
+                            (< (point) to)))))))
 
 (defvar yas--indent-original-column nil)
 (defun yas--indent (snippet)
-  (let ((snippet-markers (yas--collect-snippet-markers snippet)))
-    ;; Look for those $>
-    (save-excursion
-      (while (re-search-forward "$>" nil t)
-        (delete-region (match-beginning 0) (match-end 0))
-        (when (not (eq yas-indent-line 'auto))
-          (yas--indent-according-to-mode snippet-markers))))
-    ;; Now do stuff for 'fixed and 'auto
-    (save-excursion
-      (cond ((eq yas-indent-line 'fixed)
-             (while (and (zerop (forward-line))
-                         (zerop (current-column)))
-               (indent-to-column yas--indent-original-column)))
-            ((eq yas-indent-line 'auto)
-             (let ((end (set-marker (make-marker) (point-max)))
-                   (indent-first-line-p yas-also-auto-indent-first-line))
-               (while (and (zerop (if indent-first-line-p
-                                      (prog1
-                                          (forward-line 0)
-                                        (setq indent-first-line-p nil))
-                                    (forward-line 1)))
-                           (not (eobp))
-                           (<= (point) end))
-                 (yas--indent-according-to-mode snippet-markers))))
-            (t
-             nil)))))
+  ;; Indent lines that had indent markers (`$>') on them.
+  (save-excursion
+    (dolist (marker yas--indent-markers)
+      (unless (eq yas-indent-line 'auto)
+        (goto-char marker)
+        (yas--indent-region (line-beginning-position)
+                            (line-end-position)
+                            snippet))
+      ;; Finished with this marker.
+      (set-marker marker nil))
+    (setq yas--indent-markers nil))
+  ;; Now do stuff for `fixed' and `auto'.
+  (save-excursion
+    (cond ((eq yas-indent-line 'fixed)
+           (while (and (zerop (forward-line))
+                       (zerop (current-column)))
+             (indent-to-column yas--indent-original-column)))
+          ((eq yas-indent-line 'auto)
+           (unless yas-also-auto-indent-first-line
+             (forward-line 1))
+           (yas--indent-region (line-beginning-position)
+                               (point-max)
+                               snippet)))))
 
 (defun yas--collect-snippet-markers (snippet)
   "Make a list of all the markers used by SNIPPET."
@@ -3941,15 +3973,6 @@
         (push (yas--exit-marker snippet-exit) markers)))
     markers))
 
-(defun yas--real-line-beginning ()
-  (let ((c (char-after (line-beginning-position)))
-        (n (line-beginning-position)))
-    (while (or (eql c ?\ )
-               (eql c ?\t))
-      (cl-incf n)
-      (setq c (char-after n)))
-    n))
-
 (defun yas--escape-string (escaped)
   (concat "YASESCAPE" (format "%d" escaped) "PROTECTGUARD"))
 
@@ -3982,22 +4005,39 @@
     changed-text))
 
 (defun yas--save-backquotes ()
-  "Save all the \"`(lisp-expression)`\"-style expressions
+  "Save all the \"\\=`(lisp-expression)\\=`\"-style expressions
 with their evaluated value into `yas--backquote-markers-and-strings'."
-  (while (re-search-forward yas--backquote-lisp-expression-regexp nil t)
-    (let ((current-string (match-string-no-properties 1)) transformed)
-      (save-restriction (widen)
-                        (delete-region (match-beginning 0) (match-end 0)))
-      (setq transformed (yas--eval-lisp (yas--read-lisp (yas--restore-escapes current-string '(?`)))))
-      (goto-char (match-beginning 0))
-      (when transformed
-        (let ((marker (make-marker)))
-          (save-restriction
-            (widen)
-            (insert "Y") ;; quite horrendous, I love it :)
-            (set-marker marker (point))
-            (insert "Y"))
-          (push (cons marker transformed) yas--backquote-markers-and-strings))))))
+  (let* ((yas--snippet-buffer (current-buffer))
+         (yas--change-detected nil)
+         (detect-change (lambda (_beg _end)
+                          (when (eq (current-buffer) yas--snippet-buffer)
+                            (setq yas--change-detected t)))))
+    (while (re-search-forward yas--backquote-lisp-expression-regexp nil t)
+      (let ((current-string (match-string-no-properties 1)) transformed)
+        (save-restriction (widen)
+                          (delete-region (match-beginning 0) (match-end 0)))
+        (let ((before-change-functions
+               (cons detect-change before-change-functions)))
+          (setq transformed (yas--eval-lisp (yas--read-lisp
+                                             (yas--restore-escapes
+                                              current-string '(?`))))))
+        (goto-char (match-beginning 0))
+        (when transformed
+          (let ((marker (make-marker))
+                (before-change-functions (cdr before-change-functions)))
+            (save-restriction
+              (widen)
+              (insert "Y") ;; quite horrendous, I love it :)
+              (set-marker marker (point))
+              (insert "Y"))
+            (push (cons marker transformed) yas--backquote-markers-and-strings)))))
+    (when yas--change-detected
+      (lwarn '(yasnippet backquote-change) :warning
+             "`%s' modified buffer in a backquote expression.
+  To hide this warning, add (yasnippet backquote-change) to `warning-suppress-types'."
+             (if yas--current-template
+                 (yas--template-name yas--current-template)
+               "Snippet")))))
 
 (defun yas--restore-backquotes ()
   "Replace markers in `yas--backquote-markers-and-strings' with their values."
@@ -4026,6 +4066,16 @@
     (set-marker-insertion-type marker nil)
     marker))
 
+(defun yas--indent-parse-create ()
+  "Parse the \"$>\" indentation markers just inserted."
+  (setq yas--indent-markers ())
+  (while (search-forward "$>" nil t)
+    (delete-region (match-beginning 0) (match-end 0))
+    ;; Mark the beginning of the line.
+    (push (yas--make-marker (line-beginning-position))
+          yas--indent-markers))
+  (setq yas--indent-markers (nreverse yas--indent-markers)))
+
 (defun yas--field-parse-create (snippet &optional parent-field)
   "Parse most field expressions in SNIPPET, except for the simple one \"$n\".
 
@@ -4128,21 +4178,10 @@
   (while (re-search-forward yas--simple-mirror-regexp nil t)
     (let ((number (string-to-number (match-string-no-properties 1))))
       (cond ((zerop number)
-
              (setf (yas--snippet-exit snippet)
                    (yas--make-exit (yas--make-marker (match-end 0))))
-             (save-excursion
-               (goto-char (match-beginning 0))
-               (when yas-wrap-around-region
-                 (cond (yas-selected-text
-                        (insert yas-selected-text))
-                       ((and (eq yas-wrap-around-region 'cua)
-                             cua-mode
-                             (get-register ?0))
-                        (insert (prog1 (get-register ?0)
-                                  (set-register ?0 nil))))))
-               (push (cons (point) (yas--exit-marker (yas--snippet-exit snippet)))
-                     yas--dollar-regions)))
+             (push (cons (match-beginning 0) (yas--exit-marker (yas--snippet-exit snippet)))
+                   yas--dollar-regions))
             (t
              (let ((field (yas--snippet-find-field snippet number)))
                (if field
@@ -4175,59 +4214,61 @@
                                (yas--field-mirrors parent))))
     (or (yas--mirror-depth mirror)
         (setf (yas--mirror-depth mirror)
-              (cond ((memq mirror traversed)
-                     0)
+              (cond ((memq mirror traversed) 0)
                     ((and parent parents-mirrors)
-                     (1+ (reduce #'max
-                                 (mapcar #'(lambda (m)
-                                             (yas--calculate-mirror-depth m
-                                                                          (cons mirror
-                                                                                traversed)))
-                                         parents-mirrors))))
-                    (parent
-                     1)
-                    (t
-                     0))))))
+                     (1+ (cl-reduce
+                          #'max parents-mirrors
+                          :key (lambda (m)
+                                 (yas--calculate-mirror-depth
+                                  m (cons mirror traversed))))))
+                    (parent 1)
+                    (t 0))))))
 
 (defun yas--update-mirrors (snippet)
   "Update all the mirrors of SNIPPET."
-  (save-excursion
-    (dolist (field-and-mirror (sort
-                               ;; make a list of ((F1 . M1) (F1 . M2) (F2 . M3) (F2 . M4) ...)
-                               ;; where F is the field that M is mirroring
-                               ;;
-                               (mapcan #'(lambda (field)
-                                           (mapcar #'(lambda (mirror)
-                                                       (cons field mirror))
-                                                   (yas--field-mirrors field)))
-                                       (yas--snippet-fields snippet))
-                               ;; then sort this list so that entries with mirrors with parent
-                               ;; fields appear before. This was important for fixing #290, and
-                               ;; luckily also handles the case where a mirror in a field causes
-                               ;; another mirror to need reupdating
-                               ;;
-                               #'(lambda (field-and-mirror1 field-and-mirror2)
-                                   (> (yas--calculate-mirror-depth (cdr field-and-mirror1))
-                                      (yas--calculate-mirror-depth (cdr field-and-mirror2))))))
-      (let* ((field (car field-and-mirror))
-             (mirror (cdr field-and-mirror))
-             (parent-field (yas--mirror-parent-field mirror)))
-        ;; before updating a mirror with a parent-field, maybe advance
-        ;; its start (#290)
-        ;;
-        (when parent-field
-          (yas--advance-start-maybe mirror (yas--fom-start parent-field)))
-        ;; update this mirror
-        ;;
-        (yas--mirror-update-display mirror field)
-        ;; `yas--place-overlays' is needed if the active field and
-        ;; protected overlays have been changed because of insertions
-        ;; in `yas--mirror-update-display'
-        ;;
-        (when (eq field (yas--snippet-active-field snippet))
-          (yas--place-overlays snippet field))))))
-
-(defun yas--mirror-update-display (mirror field)
+  (save-restriction
+    (widen)
+    (save-excursion
+      (dolist (field-and-mirror
+               (sort
+                ;; make a list of ((F1 . M1) (F1 . M2) (F2 . M3) (F2 . M4) ...)
+                ;; where F is the field that M is mirroring
+                ;;
+                (cl-mapcan #'(lambda (field)
+                               (mapcar #'(lambda (mirror)
+                                           (cons field mirror))
+                                       (cl-sort
+                                        (cl-copy-list
+                                         (yas--field-mirrors field))
+                                        #'<
+                                        :key #'yas--mirror-start)))
+                           (yas--snippet-fields snippet))
+                ;; then sort this list so that entries with mirrors with parent
+                ;; fields appear before. This was important for fixing #290, and
+                ;; luckily also handles the case where a mirror in a field causes
+                ;; another mirror to need reupdating
+                ;;
+                #'(lambda (field-and-mirror1 field-and-mirror2)
+                    (> (yas--calculate-mirror-depth (cdr field-and-mirror1))
+                       (yas--calculate-mirror-depth (cdr field-and-mirror2))))))
+        (let* ((field (car field-and-mirror))
+               (mirror (cdr field-and-mirror))
+               (parent-field (yas--mirror-parent-field mirror)))
+          ;; before updating a mirror with a parent-field, maybe advance
+          ;; its start (#290)
+          ;;
+          (when parent-field
+            (yas--advance-start-maybe mirror (yas--fom-start parent-field)))
+          ;; update this mirror
+          ;;
+          (yas--mirror-update-display mirror field snippet)
+          ;; `yas--place-overlays' is needed since the active field and
+          ;; protected overlays might have been changed because of insertions
+          ;; in `yas--mirror-update-display'.
+          (let ((active-field (yas--snippet-active-field snippet)))
+            (when active-field (yas--place-overlays snippet active-field))))))))
+
+(defun yas--mirror-update-display (mirror field snippet)
   "Update MIRROR according to FIELD (and mirror transform)."
 
   (let* ((mirror-parent-field (yas--mirror-parent-field mirror))
@@ -4246,7 +4287,11 @@
         (set-marker (yas--mirror-end mirror) (point))
         (yas--advance-start-maybe (yas--mirror-next mirror) (point))
         ;; super-special advance
-        (yas--advance-end-of-parents-maybe mirror-parent-field (point))))))
+        (yas--advance-end-of-parents-maybe mirror-parent-field (point)))
+      (let ((yas--inhibit-overlay-hooks t))
+        (yas--indent-region (yas--mirror-start mirror)
+                            (yas--mirror-end mirror)
+                            snippet)))))
 
 (defun yas--field-update-display (field)
   "Much like `yas--mirror-update-display', but for fields."
@@ -4277,12 +4322,14 @@
          ;; restored correctly, this condition handles that
          ;;
          (let* ((snippet (car (yas--snippets-at-point)))
-                (target-field (and snippet
-                                   (find-if-not #'(lambda (field)
-                                                    (yas--field-probably-deleted-p snippet field))
-                                                (remove nil
-                                                        (cons (yas--snippet-active-field snippet)
-                                                              (yas--snippet-fields snippet)))))))
+                (target-field
+                 (and snippet
+                      (cl-find-if-not
+                       (lambda (field)
+                         (yas--field-probably-deleted-p snippet field))
+                       (remq nil
+                             (cons (yas--snippet-active-field snippet)
+                                   (yas--snippet-fields snippet)))))))
            (when target-field
              (yas--move-to-field snippet target-field))))
         ((not (yas--undo-in-progress))
@@ -4320,13 +4367,13 @@
      '(yas--expand-from-keymap-doc t))
 (defun yas--expand-from-keymap-doc (context)
   "A doc synthesizer for `yas--expand-from-keymap-doc'."
-  (add-hook 'temp-buffer-show-hook 'yas--snippet-description-finish-runonce)
+  (add-hook 'temp-buffer-show-hook #'yas--snippet-description-finish-runonce)
   (concat "Expand/run snippets from keymaps, possibly falling back to original binding.\n"
           (when (and context (eq this-command 'describe-key))
             (let* ((vec (this-single-command-keys))
-                   (templates (mapcan #'(lambda (table)
-                                          (yas--fetch table vec))
-                                      (yas--get-snippet-tables)))
+                   (templates (cl-mapcan (lambda (table)
+                                           (yas--fetch table vec))
+                                         (yas--get-snippet-tables)))
                    (yas--direct-keymaps nil)
                    (fallback (key-binding vec)))
               (concat "In this case, "
@@ -4355,7 +4402,8 @@
 (defun yas--snippet-description-finish-runonce ()
   "Final adjustments for the help buffer when snippets are concerned."
   (yas--create-snippet-xrefs)
-  (remove-hook 'temp-buffer-show-hook 'yas--snippet-description-finish-runonce))
+  (remove-hook 'temp-buffer-show-hook
+               #'yas--snippet-description-finish-runonce))
 
 (defun yas--create-snippet-xrefs ()
   (save-excursion
@@ -4365,17 +4413,17 @@
                                          'yasnippet)))
         (when template
           (help-xref-button 1 'help-snippet-def template)
-          (kill-region (match-end 1) (match-end 0))
-          (kill-region (match-beginning 0) (match-beginning 1)))))))
+          (delete-region (match-end 1) (match-end 0))
+          (delete-region (match-beginning 0) (match-beginning 1)))))))
 
 ;;; Utils
 
-(defvar yas-verbosity 4
+(defvar yas-verbosity 3
   "Log level for `yas--message' 4 means trace most anything, 0 means nothing.")
 
 (defun yas--message (level message &rest args)
-  "When LEVEL is above `yas-verbosity-level', log MESSAGE and ARGS."
-  (when (> yas-verbosity level)
+  "When LEVEL is at or below `yas-verbosity-level', log MESSAGE and ARGS."
+  (when (>= yas-verbosity level)
     (message "%s" (apply #'yas--format message args))))
 
 (defun yas--warning (format-control &rest format-args)
@@ -4561,14 +4609,17 @@
 
 They are mapped to \"yas/*\" variants.")
 
-(dolist (sym yas--backported-syms)
-  (let ((backported (intern (replace-regexp-in-string "^yas-" "yas/" (symbol-name sym)))))
-    (when (boundp sym)
-      (make-obsolete-variable backported sym "yasnippet 0.8")
-      (defvaralias backported sym))
-    (when (fboundp sym)
-      (make-obsolete backported sym "yasnippet 0.8")
-      (defalias backported sym))))
+(when yas-alias-to-yas/prefix-p
+  (dolist (sym yas--backported-syms)
+    (let ((backported (intern (replace-regexp-in-string "\\`yas-" "yas/" (symbol-name sym)))))
+      (when (boundp sym)
+        (make-obsolete-variable backported sym "yasnippet 0.8")
+        (defvaralias backported sym))
+      (when (fboundp sym)
+        (make-obsolete backported sym "yasnippet 0.8")
+        (defalias backported sym))))
+  (make-obsolete 'yas/root-directory 'yas-snippet-dirs "yasnippet 0.8")
+  (defvaralias 'yas/root-directory 'yas-snippet-dirs))
 
 (defvar yas--exported-syms
   (let (exported)
@@ -4577,7 +4628,7 @@
                                   (not (get atom 'byte-obsolete-variable)))
                              (and (fboundp atom)
                                   (not (get atom 'byte-obsolete-info))))
-                         (string-match-p "^yas-[^-]" (symbol-name atom)))
+                         (string-match-p "\\`yas-[^-]" (symbol-name atom)))
                     (push atom exported))))
     exported)
   "Exported yasnippet symbols.
@@ -4591,6 +4642,5 @@
 ;; Local Variables:
 ;; coding: utf-8
 ;; indent-tabs-mode: nil
-;; byte-compile-warnings: (not cl-functions)
 ;; End:
 ;;; yasnippet.el ends here
deleted file mode 100644
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/c-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-cc-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/cc-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/csharp-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-cc-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/css-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/emacs-lisp-mode/format.yasnippet
+++ /dev/null
@@ -1,5 +0,0 @@
-# contributor: Xah Lee (XahLee.org)
-# name: format
-# key: format
-# --
-(format "$0" &optional OBJECTS)
\ No newline at end of file
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/erlang-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/f90-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/html-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/latex-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/nxml-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/objc-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-cc-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/perl-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/python-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/rst-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/ruby-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/scala-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/snippet-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode
deleted file mode 100644
--- a/elpa/yasnippet-0.9.1/snippets/sql-mode/.yas-parents
+++ /dev/null
@@ -1,1 +0,0 @@
-text-mode