Created
March 10, 2019 07:49
-
-
Save ifosch/e5c6390a48c499f9314c784176bbfa21 to your computer and use it in GitHub Desktop.
My init.el
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
;;; init.el --- Personal emacs configuration | |
;;; Commentary: | |
;;; This is a configuration from scratch | |
;;; Code: | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; # Package management | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; Package.el setup with unstable MELPA | |
(require 'package) | |
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos)) | |
(not (gnutls-available-p)))) | |
(proto (if no-ssl "http" "https"))) | |
(when no-ssl | |
(warn "\ | |
Your version of Emacs does not support SSL connections, | |
which is unsafe because it allows man-in-the-middle attacks. | |
There are two things you can do about this warning: | |
1. Install an Emacs version that does support SSL and be safe. | |
2. Remove this warning from your init file so you won't see it again.")) | |
;; Comment/uncomment these two lines to enable/disable MELPA and MELPA Stable as desired | |
(add-to-list 'package-archives (cons "melpa" (concat proto "://melpa.org/packages/")) t) | |
;;(add-to-list 'package-archives (cons "melpa-stable" (concat proto "://stable.melpa.org/packages/")) t) | |
(when (< emacs-major-version 24) | |
;; For important compatibility libraries like cl-lib | |
(add-to-list 'package-archives (cons "gnu" (concat proto "://elpa.gnu.org/packages/"))))) | |
(package-initialize) | |
;;; Refresh package cache | |
(unless package-archive-contents | |
(package-refresh-contents)) | |
;;; Custom owned code | |
(custom-set-variables | |
;; custom-set-variables was added by Custom. | |
;; If you edit it by hand, you could mess it up, so be careful. | |
;; Your init file should contain only one such instance. | |
;; If there is more than one, they won't work right. | |
'(package-selected-packages | |
(quote | |
(exec-path-from-shell py-autopep8 pipenv projectile flycheck magit)))) | |
(custom-set-faces | |
;; custom-set-faces was added by Custom. | |
;; If you edit it by hand, you could mess it up, so be careful. | |
;; Your init file should contain only one such instance. | |
;; If there is more than one, they won't work right. | |
) | |
;;; Automated install for missing packages | |
(mapc #'(lambda (package) | |
(unless (package-installed-p package) | |
(package-install package))) | |
package-selected-packages) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; # Generic improvements | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; Update Emacs' exec-path from system's $PATH | |
(when (memq window-system '(mac ns x)) | |
(exec-path-from-shell-initialize)) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; # Interface improvements | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; Hide toolbars and scrollbars | |
(scroll-bar-mode -1) | |
(tool-bar-mode -1) | |
(menu-bar-mode -1) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; # Projectile | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; Enable projectile | |
(require 'projectile) | |
(projectile-mode +1) | |
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; # Syntax checking | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; Enable flycheck after init | |
(require 'flycheck) | |
(add-hook 'after-init-hook #'global-flycheck-mode) | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; # Python | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; ## Features: | |
;;; - Pipfile supported and integrated with projectile. Caveats: | |
;;; - Install dev modules using | |
;;; `M-x pipenv-install RET --dev <module-name> RET | |
;;; - Autopep8 applied on save | |
;;; - Testing supported through projectile's `C-c p P`, which allows to define | |
;;; test running command and remembers it in a per-project basis | |
;;; ## Requirements: | |
;;; - pipenv installed in your system python environment | |
;;; - autopep8 installed in your system python environment, and your project's | |
;;; Pipfile | |
;;; ## Things missing: | |
;;; - Autocomplete | |
;;; - Code navigation | |
;;; - Code templating | |
;;; - Documentation linking | |
;;; - Better/nicer highlightning | |
;;; - ? | |
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
;;; Pipenv support | |
(add-hook 'python-mode-hook #'pipenv-mode) | |
;;; Autopep8 support | |
(add-hook 'python-mode-hook #'py-autopep8-enable-on-save) | |
;;; Syntax checking for Python | |
(add-hook 'python-mode-hook #'flycheck-mode) | |
(provide 'init) | |
;;; init.el ends here |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment