V2 Emacs config now kept as it's own repository.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.9 KiB

2 years ago
;;; python-mode-settings.el --- Defines mode settings for python.
;;;
;;; Commentary:
;;;
;;;
;;; - For each project you will need to install flake8/autopep8 into the virtualenv
;;; - To set your pyenv use M-x pyenv-mode and select your local virtualenv
2 years ago
;; thx rakan.me
(defun pyenv-activate-current-project ()
"Automatically activates pyenv version if .python-version file exists."
(interactive)
(f-traverse-upwards
(lambda (path)
(message path)
(let ((pyenv-version-path (f-expand ".python-version" path)))
(if (f-exists? pyenv-version-path)
(let ((pyenv-current-version (s-trim (f-read-text pyenv-version-path 'utf-8))))
(pyenv-mode-set pyenv-current-version)
(message (concat "Setting virtualenv to " pyenv-current-version))))))))
;; Enable pyenv integration.
2 years ago
(if (executable-find "pyenv")
(use-package pyenv-mode
:ensure t
:config
2 years ago
(pyenv-mode)))
2 years ago
;; Disable elpy default virtualenv (use the pyenv one)
(setq elpy-rpc-virtualenv-path 'current)
;; Enable autopep8
(use-package py-autopep8
:ensure t)
(add-hook 'elpy-mode-hook 'py-autopep8-mode)
2 years ago
;; Enable flake8 - requires flake8 in your path so use pyenv/global pip install
(add-hook 'python-mode-hook '(lambda ()
(setq flycheck-python-flake8-executable "flake8")
(flycheck-select-checker 'python-flake8)
(flycheck-mode t)))
2 years ago
;; Activate pyenv automatically if a .python-version is supplied
(if (executable-find "pyenv")
(add-hook 'python-mode-hook 'pyenv-activate-current-project))
;; Use microsoft's python language server
(add-hook 'python-mode-hook (lambda () (lsp-python-enable)))
(use-package lsp-pyright
:ensure t
:hook (python-mode . (lambda ()
(require 'lsp-pyright)
(lsp-deferred)))) ; or lsp-deferred
2 years ago
;; Python testing helpers
(use-package python-pytest
:ensure t)