summaryrefslogtreecommitdiff
path: root/modules/prog-python.el
blob: 5dc06bf62c994fb37b306a1b70d501ec9b57aaa2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
;;; prog-python --- Python Specific Setup and Functionality -*- lexical-binding: t; -*-
;; author Craig Jennings <c@cjennings.net>

;;; Commentary:

;;; Code:

;; ------------------------- General Settings ------------------------

(add-hook 'python-mode-hook (lambda () (setq indent-tabs-mode nil))) ;; use spaces, not tabs

;; ----------------------------------- Python ----------------------------------
;; remove the guess indent python message

(use-package python
  :config
  (setq python-indent-guess-indent-offset-verbose nil))

;; --------------------------- Python Mode ---------------------------

(use-package python-mode
  :ensure nil ;; built-in
  :hook
  ((python-mode . flyspell-prog-mode)
   (python-mode . superword-mode)
   (python-mode . company-mode)
   (python-mode . electric-pair-mode))   ;; auto-complete braces and pairs
  :custom
  (python-shell-interpreter "python3")
  (setq python-indent-offset 4)) ;; 4 spaces default indent

;; ----------------------------------- Poetry ----------------------------------
;; virtual environments and dependencies

;; (use-package poetry
;;   :defer t
;;   :config
;;   ;; Checks for the correct virtualenv. Better strategy IMO because the default
;;   ;; one is quite slow.
;;   (setq poetry-tracking-strategy 'switch-buffer)
;;   :hook (python-mode . poetry-tracking-mode))

;; ---------------------------------- Blacken ----------------------------------
;; formatting on save

(use-package blacken
  :defer t
  :custom
  (blacken-allow-py36 t)
  (blacken-skip-string-normalization t)
  :hook (python-mode . blacken-mode))

;; ---------------------------------- Numpydoc ---------------------------------
;; automatically insert NumPy style docstrings in Python function definitions

(use-package numpydoc
  :defer t
  :custom
  (numpydoc-insert-examples-block nil)
  (numpydoc-template-long nil)
  :bind (:map python-mode-map
			  ("C-c C-n" . numpydoc-generate)))

;; ------------------------------------ Toml -----------------------------------

(use-package toml-mode
  :defer .5)

(use-package eldoc-toml
  :defer .5)


(provide 'prog-python)
;;; prog-python.el ends here