New in Elpy 1.23.0
==================

- Use the new ``elpy-syntax-check-command`` variable to configure
  which syntax checker to use in Emacs 26
- Sending a "group" to the shell now uses the ``o`` suffix instead of
  ``g`` to avoid clashing with ``C-g``

New in Elpy 1.22.0
==================

- Elpy now supports the Black source code formatter.
- Make Elpy work more nicely with the new Flymake.
- Support Emacs 26.1
- Lots of bugfixes.

New in Elpy 1.21.0
==================

- Debian now ships with elpy, you can use apt-get to install it.
- Elpy now knows how to deal with the flymake in the upcoming Emacs
  release.
- Some minor improvements in error messages and warnings.

New in Elpy 1.20.0
==================

- No new features, but lots of bugfixes

Thanks again to Gaby Launay for the continued and exceptional work!


New in Elpy 1.19.0
==================

- Python 3.6 and Emacs 25.3 are now officially supported.
- Sending code to a Python process is now a lot more convenient, see
  the documentation for more information.
- Elpy can now automatically update the buffer displaying help for the
  symbol under point. Customize ``elpy-modules`` and enable the autodoc
  module there!
- yapf and autopep8 now use their respective config files in the
  project root.
- And tons of bugfixes.

Thanks to Craig MacEachern, Daniel Gopar, Gaby Launay, Maxim
Cournoyer, Nicholas D. Steeves and Sam Steingold for their help in
making this release!


New in Elpy 1.18.0
==================

- Elpy is now using MELPA Stable as the official distribution point.
  Please remove jorgenschaefer.github.io from your sources list if you
  still use it. It will not receive further updates after 1.18.
- New commands for interacting with the Python shell, thanks to Rainer
  Gemulla. Check them out at
  https://elpy.readthedocs.io/en/latest/ide.html#evaluating-code-fragments
- Shells started using ``C-c C-z`` will now use the project root as
  the current directory, to be in line with other code sending
  functionality.
- importmagic has been removed. While this package added some nice
  functionality to Elpy, the way it worked by importing every module
  caused a lot of bugs. It was not an easy decision, but this is
  better for most Elpy users.
- Rope is no longer supported for completions and similar
  functionality. Refactoring support using Rope is still there. Sadly,
  Rope has not received much of any update in a long time, and
  attempts to revive it failed. Maintaining multiple code paths to
  support both Jedi and Rope was complicated, so we decided to get rid
  of Rope for these features. Jedi is almost always an equivalent if
  not better choice.
- The Green test runner is now supported by default.
- Beyond all of this, there were numerous bugfixes.

We are happy to report that Elpy now has more maintainers! Daniel
Gopar, Rainer Gemulla and @galaunay are now helping regularly with
this project.

Thanks to all the contributors!


New in Elpy 1.17.0
==================

- The xref functionality in newer Emacsen is now supported for
  following symbols at point.
- Elpy now supports PEP 397 for Windows executable names.
- In addition to pylint, Elpy now also supports epylint correctly.
- A number of features for working with interactive Python have been added to
  Elpy; e.g., commands for sending code fragments to the Python shell and the
  ability to echo their output in the message area. See the documentation for a
  full list.
- Bunch of little bugfixes.


New in Elpy 1.16.0
==================

- You can now change which function is used to run test commands,
  instead of the default ``compile``, using
  ``elpy-test-compilation-function``. This allows using ``pdb`` to run
  tests in a debugger, for example.
- Elpy now sets ``IPY_TEST_SIMPLE_PROMPT``, which should prevent a
  number of problems with IPython 5.
- If you like Elpy, you can now sponsor its development using Patreon
  at https://www.patreon.com/jorgenschaefer


New in Elpy 1.15.0
==================

- Elpy now supports profiling, try ``elpy-profile-buffer-or-region``!
- Do not randomly downcase completion candidates anymore.
- Work around a bug in Emacs 25.1 and before related to current
  IPython shells.
- And lots of other bugfixes.


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
==================

- Some symbols can now be completed with parentheses after them,
  useful for functions. The heuristic for when to add parentheses and
  not is not optimal, so this is not enabled by default—customize
  ``elpy-company-post-completion-function`` to enable this feature.
- Support dedicated Python shells (one per Python file). You can
  customized ``elpy-dedicated-shells`` to make this the default.
- Elpy now uses ``python -m pip`` instead of pip directly to improve
  interaction with virtualenvs.
- Support for Python 2.6 has been officially dropped.
- Display for backend errors has been disabled by default. Jedi has
  not had a release in a long while, and many bugs have been unfixed.
  These errors have only caused added workload for Elpy maintainers.
  The option will be reverted once Jedi has had a new release.


New in Elpy 1.11.0
==================

- Elpy now supports yapf to format your code.
- You can now adjust whether Elpy should hide modes from the mode line
  or not using ``elpy-remove-modeline-lighter``
- When the new option ``elpy-disable-backend-error-display`` is set,
  Elpy will not show its error pop-up anymore. This can be useful if
  you run into an annoying bug in Jedi, for example.
- New command ``elpy-goto-definition-other-window`` on ``C-x 4 M-.``.
- Expanding ``super`` now gives the short form supported in Python 3.
- All Rope errors are now caught, as the upstream maintainers did not
  show interest in distinguishing between malformed input and bugs in
  their library.


New in Elpy 1.10.0
==================

- Marking the current indentation level at the top level will now mark
  the whole buffer.
- The region will be normalized before re-indenting it, making the
  behavior more predictable for partially marked lines.
- Using autopep8 on the whole buffer will now keep point (roughly) at
  the same location as it was.
- The autopep8 code now also uses the same configuration options as
  the command line tool.
- Malformed JSON data from the backend is now handled better.
- RPC processes are restarted when the current virtualenv changes.
- Python 3.5 is now officially supported.
- Flymake will now not be enabled in buffers without file name, where
  it can't run anyhow, or when the checker program does not exist in
  the first place.
- It is now possible to ask Elpy not to remove the mode line lighter
  of company mode, which can be useful if you use company in other
  modes.
- Test discovery now also allows file names without "test" in them to
  be tested. Classes and methods still require the substring, though.
- Spurious equals signs at the end of completions from Jedi will now
  be ignored.
- Various other bug fixes.


New in Elpy 1.9.0
=================

- Elpy now supports the ``autopep8`` library for automatically
  formatting Python code. All refactoring-related code is now grouped
  under ``C-c C-r``. Use ``C-c C-r i`` to fix up imports using
  importmagic, ``C-c C-r p`` to fix up Python code with autopep8, and
  ``C-c C-r r`` to bring up the old Rope refactoring menu.
- ``C-c C-b`` will now select a region containing surrounding lines of
  the current indentation or more.
- ``C-c C-z`` in a Python shell will now switch back to the last
  Python buffer, allowing to use the key to cycle back and forth
  between the Python buffer and shell.
- The pattern used for ``C-c C-s`` is now customizeable in
  ``elpy-rgrep-file-pattern``.
- ``<C-return>`` now can be used to send the current statement to the
  Python shell. Be careful, this can break with nested statements.
- The Elpy minor mode now also works in modes derived from
  ``python-mode``, not just in the mode itself.


New in Elpy 1.8.1
=================

- Ignore a ``KeyError`` from Jedi 0.9.0 which occurs a lot in normal
  code.


New in Elpy 1.8.0
=================

- Emacs 24.5 is now officially supported
- The new configuration option ``elpy-rpc-ignored-buffer-size`` defines a maximum buffer size to be handle completion in, to avoid laggy interaction in unusually large files
- Indentation block movement was replaced with code that just moves the marked block or the current line; this should be a lot less magical and more predictable
- Running the test at point now correctly ignores any inner methods
- Jedi docstrings now show the full name of the object
- The RPC interpreter is now chosen correctly on cygwin
- ``elpy-shell-send-region-or-buffer`` now warns of tabs in the data being sent
- Elpy now binds stdout and stderr to ``/dev/null`` to avoid being confused by spurious output from other libraries
- RPC buffers (and processes) are removed after some time to avoid them piling up endlessly
- It is not possibly anymore to use customize alone to use ipython, because of some bad interaction between custom options in Elpy and python.el
- And lots of bugfixes (50 issues closed!)


New in Elpy 1.7.1
=================

- Do not fail on errors from importmagic.
- Handle new minor mode behavior of new versions of yasnippet.
- Do use the argument to ``elpy-use-ipython`` correctly.
- Handle unexpected data from the backend more gracefully.


New in Elpy 1.7.0
=================

- Elpy now can add missing import directives automatically, by using
  Alec Thomas' excellent importmagic_ library. Use ``C-c C-m`` to add
  a single import statement, or ``C-c C-S-m`` to include all missing
  import statements. Many thanks to Georg Brandl for doing a lot of
  work to bring this feature to Elpy!
- The Jedi backend now also supports ``C-c C-d`` to display a
  docstring. Thanks again to Georg Brandl for the patch.
- It is now possible to disable the display of the current function in
  the echo area by setting ``elpy-eldoc-show-current-function`` to
  ``nil``.
- idomenu was removed.
- Twisted's Trial test runner is now supported. Thanks to Elric Milon
  for the patch!
- All test runners now use a variable to decide which command to run,
  which for example allows using ``manage.py`` for the Django test
  runner, or your own test script which sets up the environment
  correctly.
- Emacs 24.4 is now officially supported.
- Various bugfixes.

.. _importmagic: https://github.com/alecthomas/importmagic

New in Elpy 1.6.0
=================

- When point is on a line with a flymake error, Elpy will now show the
  error in the echo area.
- The movement commands (``C-<cursor>``) have been reworked again.
  Going left and right will now move by indentation levels left of the
  current indentation, i.e. jump four spaces, and by words right of
  the current indentation. Going up and down will go to the previous
  or next line with the indentation level point is at, not the
  indentation the line has. Try it, it's more difficult to explain
  than to use.
- Completion results are now sorted more sensibly, with
  single-underscore symbols at the end, and double-underscore symbols
  after normal symbols, but before single-underscore ones.
- ``M-x elpy-config`` will now point out if there are newer versions
  available for packages used by Elpy.
- ``M-x elpy-config`` will now warn if ``~/.local/bin`` is not in
  ``PATH`` while there is no virtualenv active.
- The ``M-x elpy-version`` command is back by popular demand.
- RPC buffers used by Elpy are now hidden by default, having a space
  at the beginning of the name.
- When the Rope library throws an error, Elpy will now also attempt to
  provide reproduction steps. This used to only happen for Jedi.
- Various bug fixes.


New in Elpy 1.5.1
=================

- Fix a bug where company-mode might get confused about the current
  backend, leading to an error about ``Symbol's function definition is
  void: nil``
- Fix Rope so it won’t search the whole project directory. This was an
  intended feature in v1.5 which did not work originally.
- Use ``yas-text`` instead of ``text`` in snippets for compatibility
  with the unreleased yasnippet from MELPA (thanks to Daniel Wu!)

New in Elpy 1.5.0
=================

- Elpy now has a `manual`_. Additionally, there's a menu bar now which
  should make it easier to discover Elpy features.
- The Elpy Python package now ships with the Emacs Lisp package,
  removing the need to install Elpy via pip.
- Python 3.4 is now officially supported.
- The new command ``elpy-config`` can be used to configure Elpy using
  Emacs' built-in customize system. Elpy has been changed to make the
  most of this.
- Elpy now uses company-mode instead of auto-complete for on-the-fly
  auto completion. This changes a few things. There is no automatic
  documentation popup anymore. Instead, you can type ``C-d`` and get
  the documentation buffer. In addition, you can type ``C-w`` to see
  the source of the current candidate in context.
- Elpy now uses pyvenv as the virtualenv module, enabling
  virtualenvwrapper hooks.
- We now ship with a large number of YASnippet snippets. Try ``M-x
  yas-insert-snippet``.
- The new unified test running interface on ``C-c C-t`` will try to
  determine the current test and run it, or, failing that, run all
  tests. Provide a prefix argument to just run all tests no matter
  what. You can change the test runner to be used using
  ``elpy-set-test-runner``. Elpy supports the default unittest
  discover runner, the Django discover runner, nosetests and py.test
  by default. New test runners can easily be defined.
- There's a new multi-edit functionality. ``C-c C-e`` will edit all
  occurrences of the symbol under point. When using Jedi, this is
  using semantic information as opposed to just syntactic one. When a
  region is active, edit all occurrences of the text in region in the
  current buffer.
- When sending Python code to the interactive interpreter using ``C-c
  C-c``, Elpy will now not automatically pop to the interpreter
  anymore. Use ``C-c C-z`` to switch to the interpreter.
- Elpy will now display the current class and function if there is no
  call tip to be displayed. Removes the ``C-c C-q`` binding.
- If there is a call tip, highlight the current argument (requires Jedi).
- The documentation interface using ``C-c C-d`` is much smarter now,
  falling back to pydoc when necessary and providing sensible
  completion for that, too. Provide a prefix argument if you want no
  smarts, just pydoc.
- ``<S-return>`` and ``<C-S-return>`` now open a line below or above
  the current one.
- ``<C-cursor>`` will now navigate between Python blocks of the same
  indentation level. ``<M-cursor>`` will move the current block. Try
  it, it's easier to understand when you see it than to explain it.
- There's a new concept of modules. The variable
  ``elpy-default-minor-modes`` is gone (use ``elpy-mode-hook`` for
  minor modes). Instead, there's now ``elpy-modules`` which can be
  used to enable or disable certain features of Elpy.
- ``elpy-clean-modeline`` is gone, modules now clean themselves up.
- Elpy now distinguishes between the project root, where project files
  are located, and the library root, which should be part of
  ``sys.path`` to import the module under development.
- ``elpy-project-ignored-directories`` replaces the old
  ``elpy-rgrep-ignored-directories`` and is used by more features.
- ``elpy-doc-websearch`` has been removed as it was barely useable
  as is.
- Elpy now tries to be more helpful when errors in the backend happen.
  This removes ``elpy-rpc-traceback``, as that will be displayed by
  default.
- Optimizations were added to handle large files, making general
  interaction a lot faster.
- When Rope is being used, do not search through unusually large
  directories. This should speed up interaction in those cases,
  especially when editing a file in the home directory.
- And a whole lot of minor bug fixes and little improvements.

.. _manual: https://elpy.readthedocs.io/


New in Elpy 1.4.2
==================

- Minor bugfix to prevent an error from projectile-project-root to
  interfere with Elpy’s project finding strategy.

New in Elpy 1.4.1
=================

- Elpy now sets project-wide preferences for Rope, enabling completion
  in the sys package, among others.
- An error is avoided in the Jedi backend when trying to go to symbols
  in compiled packages.
- A compatibility alias was added for nose.el, which insists on
  breaking backwards compatibility with Emacs 24.x.

New in Elpy 1.4.0
=================

- Elpy has moved to its own ELPA. Make sure to update your
  package-archives (as described above).
- For a file in a Projectile-managed project is opened, Elpy will now
  use Projectile’s project root.
- When the user has set a valid python-check-command, elpy will now
  refrain from overriding it.
- On Windows, elpy is now using the pythonw.exe interpreter for the
  RPC process, as that seems to be causing fewer issues.
- And various smaller bugfixes.

New in Elpy 1.3.0
=================

- virtualenv.el has been replaced by pyvenv.el, as that library offers
  more features.
- elpy-rpc-restart now works globally, not just in Elpy buffers.
- Elpy does not try to complete in comments anymore.
- The new command elpy-rpc-traceback gives access to the last stack
  trace in the Elpy backend, helping with debugging problems.
- The flymake check function is now run with the current directory as
  / to avoid accidental imports.
- Ensure correct handling of yas-snippet-dirs by Elpy. This variable
  can be a string, so ensure it’s a list before adding to it.
- The new variable elpy-show-installation-instructions can be used to
  disable the installation screen.
- Fix a very nasty bug causing spurious empty lines in a buffer or
  consume 100% CPU in certain situations when using the Jedi backend.
  Thanks to Matthias Dahl for finding this bug.
- Various other bugfixes.

New in Elpy 1.2.1
=================

Bugfix release.

- The refactoring was not ported to the new asynchronous API,
  resulting in an error when refactoring was attempted.
- The project root now always returns a directory. Too many parts of
  elpy relies on this. If the project root turns out to be your home
  directory, elpy will warn you about it.
- Elpy now works correctly with Emacs 24.2. There were some
  compatibility functions missing.
- Blocking RPC calls now do not block for one second even if there is
  process output.

New in Elpy 1.2
===============

- Elpy now uses asynchronous RPC. This means that Emacs should not
  freeze anymore while eldoc or auto-complete functions run.
- ``elpy-shell-send-region-or-buffer`` will now remove common
  indentation of the region, making it possible to easily send parts
  of an if statement or function body without manually adjusting the
  indentation.
- The Python package depends on ``flake8``, and will also try to be
  smarter when detecting ``flake8`` for on-the-fly checking.
- ``elpy-check`` can be run with a prefix argument to check the whole
  project, instead of only the current file.
- ``elpy-rgrep-symbol`` now ignores a few common directories
  (``.tox``, ``build``, ``dist``).
- When using the rope backend, Elpy will not create the
  ``.ropeproject`` folders anymore. This should keep projects a lot
  cleaner.

New in Elpy 1.1
===============

- Elpy now always uses the root directory of the package as the
  project root; this should avoid some confusion and improve
  auto-completion suggestions
- ``elpy-shell-send-region-or-buffer`` now accepts a prefix argument
  to run code wrapped behind ``if __name__ == '__main__'``, which is
  ignored by default
- ``elpy-project-root`` is now a safe local variable and can be set
  from file variables
- Elpy now supports project-specific RPC processes, see
  ``elpy-rpc-project-specific`` for how to use this
- ``M-*`` now works to go back where you came from after a ``M-.``
- Elpy now ships with a few dedicated snippets for YASnippet
- Support and require Jedi 0.6.0

New in Elpy 1.0
===============

- Version 0.9 was a release candidate, so this release focused on bug
  fixes instead of new features.
- ``elpy-enable`` now takes an optional argument that skips variable
  initialization for those users who prefer their own defaults for
  other modes.
- ``python-check.sh`` has been removed from Elpy, as the flake8 tool
  from pypi does everything it does, only better.
- Elpy will now start the helper subprocess in the root directory,
  avoiding accidental Python path clobbering.

New in Elpy 0.9
===============

- Elpy now officially support Python 2.6, 2.7 and 3.3 on Emacs 24.2
  and 24.3, with continuous integration tests thanks to
  `Travis CI`_.
- Extended support for Pydoc. ``C-u C-c C-d`` will now prompt for an
  auto-completed symbol to run Pydoc on. The pydoc output will be
  formatted and placed in a help buffer for easy review.
- Refactoring support is back. ``C-c C-r`` will pop up a refactoring
  wizard offering various refactoring options. Most of them depend on
  the presence of Rope, though, even if Jedi is used as a completion
  backend.
- The Rope backend has been extended to provide completions for
  modules in an import clause.
- New refactoring option: Add missing imports. This will search for
  undefined symbols in the current file and automatically add
  appropriate imports.
- ``C-c C-c (elpy-rgrep-symbol)`` now prompts for a regexp when a prefix
  argument is given instead of using the symbol at point.

.. _Travis CI: https://travis-ci.org/

New in Elpy 0.8
===============

Python Backend Rewrite
----------------------

- Elpy does not use Pymacs, Ropemacs and Ropemode anymore, but instead
  provides its own Python interface with the elpy package on PyPI.
- This not only should improve performance, but also enables using
  Jedi as an alternative backend for completion. Use ``M-x
  elpy-set-backend`` to change between rope and jedi. For now, this
  does disable all refactoring support, though.

Project Support
---------------

- Elpy now has built-in project support. The interface is rather
  simple: You can set ``elpy-project-root`` to the correct value in
  ``.dir-locals.el``, or just rely on the automatic detection. If you
  change your mind, you can always just ``elpy-set-project-root``.
- New dependency: Find File in Project (ffip), bound to ``C-c C-f`` by
  default. This will allow you to find files anywhere in your project
  using a search-as-you-type interface like ido.
- New dependency: nose, bound to ``C-c C-t`` by default. This will run
  the nosetests binary in the root of your current library directory.
  You can restrict the tests being run to the current test or the
  current module by adding prefix arguments.
- New function: Recursive grep for symbol, bound to ``C-c C-s`` by
  default. This will search for the symbol at point in the whole
  project.

New dependencies
----------------

- idomenu, bound to ``C-c C-j`` by default. This replaces the standard
  imenu interface with an ido-based search-as-you-type interface for
  definitions in the current buffer.
- virtualenv.el, replacing pyvirtualenv.el). Use ``M-x
  virtualenv-workon`` to enable a virtualenv.
- iedit.el, bound to ``M-,`` by default. This highlights all occurrences
  of the symbol at point or the active region in the current buffer or
  narrowing. When you edit any of them, all others will be edited the
  same. This allows some basic and very quick refactoring.
- New variable ``elpy-default-minor-modes`` which is run by ``elpy-mode``
  on startup. If you don’t want to use some modes, remove them from
  here.

Key Bindings and Functions
--------------------------

- The key bindings have been reworked and cleaned up. Sorry, this
  might cause confusion.
- Yasnippet is now on its own keybinding, ``C-c C-i``, instead of
  sharing the auto-complete interface. This was done because some
  snippets conflicted with legitimate, unsnippy completions.
- New function: Occur Definitions, bound to ``C-c C-o`` by default. This
  will run the standard occur command to show definitions (classes and
  functions) in your current buffer, giving you a very quick outline
  and the ability to jump to different definitions quickly.
- New function: Show Defun, bound to ``C-c C-q`` by default. This will
  show the current method and possibly class in the mode line, which
  is helpful in long functions.
- New functions: Forward/backward definition, bound to ``M-n`` and ``M-p``
  as well as ``<M-down>`` and ``<M-up>`` by default. These will jump to
  the next or previous definition (class or function), helping with
  quick navigation through a file.

Miscellaneous
-------------

- The documentation function (``C-c C-d``) now uses pydoc when a prefix
  arg is given.
- The web search function (``C-c C-w``) now searches for the current
  symbol by default. The tab-completing web documentation interface
  was removed and is scheduled to be replaced with a new pydoc
  interface in future versions.
- The ``python-check.sh`` is now shipped with elpy. If you load elpy.el
  before you load python.el, it should be the default
  ``python-check-command``.
