;;; oni-python.el --- Python configuration -*- lexical-binding: t; -*- ;; Copyright (C) 2019 Tom Willemse ;; Author: Tom Willemse ;; Keywords: local ;; Version: 20190206003120 ;; Package-Requires: (oni-company company-jedi fill-column-indicator flycheck rainbow-delimiters reformatter traad hydra) ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; My Python configuration. ;; ;; It features: ;; - Completion ;; - Syntax checking ;; - Right margin ;; - Delimiter balancing ;; - Automatic reformatting ;; - Delimiter highlighting ;;; Code: (require 'company) (require 'hydra) (require 'python) (require 'reformatter) (require 'traad) (require 'whitespace) (autoload 'hl-indent-mode "hl-indent-mode") (defun oni-python-set-fill-column () "Set the `fill-column' and `comment-fill-column' for the current buffer. The values are taken from the PEP8 coding standard for Python." (setq-local fill-column 80) (setq-local comment-fill-column 72)) (defun oni-python-whitespace-mode () "Set the `whitespace-style' to show the relevat whitespace. In Python buffers it should show any tabs being used and and used for indentation." (setq-local whitespace-style '(face tabs)) (whitespace-mode)) (add-to-list 'company-backends 'company-jedi) (reformatter-define python-black :program "black" :args `("--line-length" ,(number-to-string fill-column) "-") :lighter "" :group 'python-black) (defhydra python-refactor-hydra (:color blue) ("r" traad-rename "Rename object")) (define-key python-mode-map (kbd "C-c r") 'python-refactor-hydra/body) (add-hook 'python-mode-hook 'electric-indent-local-mode) (add-hook 'python-mode-hook 'electric-pair-local-mode) (add-hook 'python-mode-hook 'flycheck-mode) (add-hook 'python-mode-hook 'fci-mode) (add-hook 'python-mode-hook 'company-mode) (add-hook 'python-mode-hook 'rainbow-delimiters-mode) (add-hook 'python-mode-hook 'python-black-on-save-mode) (add-hook 'python-mode-hook 'oni-python-set-fill-column) (add-hook 'python-mode-hook 'oni-python-whitespace-mode) ;;;###autoload(with-eval-after-load 'python (require 'oni-python)) (provide 'oni-python) ;;; oni-python.el ends here