chd/.emacs.d/jlj-python.el
2021-04-29 20:21:26 -05:00

68 lines
1.6 KiB
EmacsLisp

;;; jlj-python.el --- python customizations -*- lexical-binding: t -*-
;;; Commentary:
;; pylint is required (pip install pylint)
;; pep8 (pip install pep8)
;; don't use python-mode because JESUS. CHRIST. it throws everything off.
;; using jedi requires virtualenv to be installed
;; pipenv is mostly acceptable but i could not make a full IDE experience happen
;;; Code:
;; Initialise installed packages
(use-package pipenv
:ensure t)
(use-package poetry
:ensure t)
(use-package flycheck
:ensure t)
; helps with LSP, generally.
(yas-global-mode 1)
; Let's set up company! perhaps not necessary but this is what i like to use
(use-package company
:ensure t
:config
(setq company-idle-delay 0)
(setq company-minimum-prefix-length 1))
; install lsp mode
(use-package lsp-mode
:ensure t
:hook (python-mode . lsp-deferred)
:commands (lsp lsp-deferred))
;; ; let's add the lsp company backend
;; (use-package company-lsp
;; :config
;; (push 'company-lsp company-backends))
; also installs lsp as a dependency
(use-package lsp-ui
:ensure t
:hook (lsp-mode . lsp-ui-mode))
(use-package lsp-python-ms
:ensure t
:init (setq lsp-python-ms-auto-install-server t)
:hook (python-mode . (lambda ()
(require 'lsp-python-ms)
(lsp)))) ; or lsp-deferred
;; (use-package pyvenv
;; :ensure t)
(use-package virtualenvwrapper
:ensure t
:config
(venv-initialize-interactive-shells) ;; if you want interactive shell support
(venv-initialize-eshell) ;; if you want eshell support
(setq venv-location "~/.local/share/virtualenvs/"))
;;; jlj-python.el ends here