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.

78 lines
3.1 KiB

  1. (use-package python
  2. :mode ("\\.py\\'" . python-mode))
  3. ;; ##############
  4. ;; EPC muss installiert sein
  5. ;; Fedora:
  6. ;; # dnf install python3-pip
  7. ;; pip3 install --user epc
  8. ;; damit der EPC-Server funktioniert,
  9. ;; muss in /etc/hosts der Eintrag
  10. ;; 127.0.0.1 localhost
  11. ;; enthalten sein!
  12. ;; ##############
  13. ;; Python-Code ausführen:
  14. ;; C-C C-z open python shell
  15. ;; C-C C-c run content of buffer in opened shell
  16. ;; C-C C-r run selected region in python shell
  17. ;; virtualenv für python muss installiert sein
  18. ;; Fedora: # dnf install python3-virtualenv
  19. ;;
  20. ;; Benutzung
  21. ;; venv-workon: virtualenv aussuchen und setzen
  22. ;; venv-deactivate: deaktiviert virtualenv
  23. ;; venv-mkvirtualenv: erstellt neue virtualenv in venv-location
  24. ;; venv-lsvirtualenv: listet alle virtualenvs auf
  25. ;; venv-cdvirtualenv: wechselt default-Verzeichnis zum momentanen virtualenv-Verzeichnis
  26. ;; venv-cpvirtualenv: erstellt neue virtualenv aus einem exisiterenden.
  27. ;; fragt nach beiden Namen
  28. (use-package virtualenvwrapper
  29. :ensure t
  30. :init
  31. (venv-initialize-interactive-shells) ;;interactive shell support
  32. (venv-initialize-eshell) ;;eshell support
  33. (setq venv-location "~/Archiv/Programmierprojekte/Python/virtualenv/")
  34. (setq python-environment-directory venv-location)
  35. (add-hook 'venv-postmkvirtualenv-hook
  36. (lambda () (shell-command "pip install epc jedi")))
  37. ;; (add-hook 'venv-postactivate-hook 'jedi:stop-server) ;;server-neustart, wenn neue virtualenv
  38. ;; (add-hook 'venv-postdeactivate-hook 'jedi:stop-server) ;;server-neustart, wenn neue virtualenv
  39. )
  40. ;; sucht und aktiviert die virtualenv nach folgenden Aspekten:
  41. ;; .python-version im project-root (ethält absoluten Pfad zur virtualenv
  42. ;; .venv oder venv Verzeichnis im project-root
  43. ;; eine virtualenv mit dem selben Namen wie project-root
  44. ;; - project-root ist definiert als Verzeichnis, dass "auto-virtualenvwapper-project-root-files" enthält,
  45. ;; die da wären: .python-version, .dir-locals.el, .projectile, .emacs-project, .manage.py, .git
  46. ;; für mich zuverlässig funktioiert nur absoluter Pfadin .python-version
  47. (use-package auto-virtualenvwrapper
  48. :ensure t
  49. :config
  50. (add-hook 'python-mode-hook #'auto-virtualenvwrapper-activate))
  51. ;;activate on changing buffers
  52. ;; (add-hook 'window-configuration-change-hook #'auto-virtualenvwrapper-activate)
  53. ;;activate on focus in
  54. ;; (add-hook 'focus-in-hook #'auto-virtualenvwrapper-activate))
  55. (use-package py-autopep8
  56. :ensure t
  57. :config
  58. (add-hook 'python-mode-hook 'py-autopep8-enable-on-save))
  59. ;; benötigt pip install jedi / emerge dev-python/jedi
  60. (use-package company-jedi ;; company-mode completion backend for python jedi
  61. ;; :defer t
  62. :ensure t
  63. :config
  64. (defun my/python-mode-hook()
  65. (add-to-list 'company-backends 'company-jedi))
  66. (add-hook 'python-mode-hook 'my/python-mode-hook)
  67. )
  68. (provide 'lang-python)