diff --git a/contrib/lang/python/README.md b/contrib/lang/python/README.md
index 9d4a63a2d..5194dbbf2 100644
--- a/contrib/lang/python/README.md
+++ b/contrib/lang/python/README.md
@@ -10,6 +10,7 @@
- [Install](#install)
- [Layer](#layer)
- [Anaconda dependencies](#anaconda-dependencies)
+ - [Automatic buffer formatting on save](#automatic-buffer-formatting-on-save)
- [Key Bindings](#key-bindings)
- [Inferior REPL process](#inferior-repl-process)
- [Running Python Script in shell](#running-python-script-in-shell)
@@ -37,6 +38,7 @@ Features:
- Virtual Environment using [pyvenv][] and [pyenv][]
- semantic mode is enabled
- Django support via [pony-mode][]
+- PEP8 compliant formatting via [YAPF][]
## Install
@@ -62,6 +64,16 @@ To fix this, install the `anaconda-mode` [dependencies][anaconda-deps] by hand:
Source: https://github.com/proofit404/anaconda-mode#issues
+### Automatic buffer formatting on save
+
+To enable automatic buffer formatting on save with [YAPF][] set the variable
+`python-enable-yapf-format-on-save` to `t`.
+
+```elisp
+(setq-default dotspacemacs-configuration-layers '(
+ (python :variables python-enable-yapf-format-on-save t)))
+```
+
## Key Bindings
### Inferior REPL process
@@ -132,6 +144,7 @@ Test commands (start with m t or m T):
Key Binding | Description
----------------------|------------------------------------------------------------
+SPC m = | Reformat the buffer according to PEP8 using [YAPF][]
SPC m d b | toggle a breakpoint
SPC m g g | go to definition using `anaconda-mode-goto` (C-o to jump back)
SPC m h d | look for documentation using `helm-pydoc`
@@ -212,3 +225,4 @@ Manage Django with SPC m j m.
[nose.el]: https://github.com/syl20bnr/nose.el
[pony-mode]: https://github.com/davidmiller/pony-mode
[anaconda-deps]: https://github.com/proofit404/anaconda-mode/blob/master/requirements.txt
+[YAPF]: https://github.com/google/yapf
diff --git a/contrib/lang/python/config.el b/contrib/lang/python/config.el
index 7099e7491..55aadcc4b 100644
--- a/contrib/lang/python/config.el
+++ b/contrib/lang/python/config.el
@@ -14,6 +14,9 @@
(spacemacs|defvar-company-backends python-mode)
+(defvar python-enable-yapf-format-on-save nil
+ "If non-nil, automatically format code with YAPF on save.")
+
;; Command prefixes
;; not supported for now
@@ -30,6 +33,3 @@
;; ("mp" . "pyenv")))
;; (mapc (lambda (x) (spacemacs/declare-prefix (car x) (cdr x)))
;; python/key-binding-prefixes)
-
-(defvar yapf-format-on-save nil
- "If non-nil, automatically format code with YAPF on save.")
diff --git a/contrib/lang/python/extensions.el b/contrib/lang/python/extensions.el
index 62e66584b..464f4ffa1 100644
--- a/contrib/lang/python/extensions.el
+++ b/contrib/lang/python/extensions.el
@@ -11,9 +11,7 @@
;;; License: GPLv3
;; Pre extensions are loaded *before* the packages
-(setq python-pre-extensions
- '(
- ))
+(setq python-pre-extensions '())
;; Post extensions are loaded *after* the packages
(setq python-post-extensions
@@ -72,9 +70,7 @@
(defun python/init-py-yapf ()
(use-package py-yapf
:init
- (evil-leader/set-key-for-mode 'python-mode
- "m=" 'py-yapf-buffer)
+ (evil-leader/set-key-for-mode 'python-mode "m=" 'py-yapf-buffer)
:config
- (progn
- (if yapf-format-on-save
- (add-hook 'python-mode-hook 'py-yapf-enable-on-save)))))
+ (if python-enable-yapf-format-on-save
+ (add-hook 'python-mode-hook 'py-yapf-enable-on-save))))