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