;; package --- Thooms emacs config ;;; Commentary: ;;; Code: (require 'cl) ;; Set user infos (setq user-full-name "blabla") (setq user-mail-address "blabla") ;; Ask "y" or "n" instead of "yes" or "no". Yes, laziness is great. (fset 'yes-or-no-p 'y-or-n-p) ;; Highlight corresponding parentheses when cursor is on one (show-paren-mode t) ;; Highlight tabulations (setq-default highlight-tabs t) ;; Show trailing white spaces (setq-default show-trailing-whitespace t) ;; Remove useless whitespace before saving a file (add-hook 'before-save-hook 'whitespace-cleanup) (add-hook 'before-save-hook (lambda() (delete-trailing-whitespace))) ;; Final newline handling (setq require-final-newline t) ;; Save backup files in a dedicated directory (setq backup-directory-alist '(("." . "~/.saves"))) ;; Set locale to UTF8 (set-language-environment 'utf-8) (set-terminal-coding-system 'utf-8) (setq locale-coding-system 'utf-8) (set-default-coding-systems 'utf-8) (set-selection-coding-system 'utf-8) (prefer-coding-system 'utf-8) ;;;;;;;;; Package management ;; Add package sources (package-initialize) (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ("marmalade" . "http://marmalade-repo.org/packages/") ("melpa" . "http://melpa.org/packages/"))) ;; Define user packages (defvar thooms/packages '( exec-path-from-shell ; to benefit from shell-set PATH grandshell-theme autopair ; Auto delimiter closing magit ; git interface neotree company ; Autocompletion framework company-quickhelp flycheck ; Syntax checking helm projectile helm-projectile helm-ag smart-mode-line yaml-mode scala-mode ensime web-mode markdown-mode haskell-mode python-mode protobuf-mode rjsx-mode ;ghc-mod ;company-ghc ;;; Golang go-mode company-go ) "Hallo" ) ;; Sync packages (defun thooms/packages-installed-p () (loop for pkg in thooms/packages when (not (package-installed-p pkg)) do (return nil) finally (return t))) (unless (thooms/packages-installed-p) (message "%s" "Refreshing package database...") (package-refresh-contents) (dolist (pkg thooms/packages) (when (not (package-installed-p pkg)) (package-install pkg)))) (setq exec-path-from-shell-variables '("PATH")) (exec-path-from-shell-initialize) ;; Global mode start (autopair-global-mode) (global-flycheck-mode) ;; Company setup (add-hook 'after-init-hook 'global-company-mode) (add-hook 'after-init-jook 'company-quickhelp-mode) (setq company-tooltip-limit 20) ; bigger popup window (setq company-idle-delay .1) ; decrease delay before autocompletion popup shows (setq company-echo-delay 0) ; remove annoying blinking (setq company-begin-commands '(self-insert-command)) ; start autocompletion only after typing ;; Go mode custom (add-hook 'go-mode-hook 'company-mode) (add-hook 'go-mode-hook (lambda () (add-hook 'before-save-hook 'gofmt-before-save) ; gofmt before every save (setq gofmt-command "gofmt") ; gofmt uses invokes goimports (local-set-key (kbd "M-.") 'godef-jump) (set (make-local-variable 'company-backends) '(company-go)) (company-mode))) ;; Editor mods (setq inhibit-splash-screen t initial-scratch-message nil) (scroll-bar-mode -1) (tool-bar-mode -1) (menu-bar-mode -1) (setq column-number-mode t) (require 'neotree) (global-set-key [f8] 'neotree-toggle) ;; Sets theme and fonts (defun frame-config (frame) "Custom behavior on new frames" (with-selected-frame frame (when (display-graphic-p) (setq frame-title-format '(buffer-file-name "%f" ("%b"))) (set-face-attribute 'default nil :font "Inconsolata-14")) (if (display-graphic-p) (load-theme 'grandshell t) (load-theme 'grandshell t)) )) (frame-config (selected-frame)) (add-hook 'after-make-frame-functions 'frame-config) ;; Helm and projectile conf (require 'helm-config) (helm-mode 1) (helm-autoresize-mode 1) (global-set-key (kbd "M-x") 'helm-M-x) (global-set-key (kbd "C-x C-f") 'helm-find-files) (global-set-key (kbd "C-x C-b") 'helm-buffers-list) (projectile-mode) (helm-projectile-on) (setq projectile-completion-system 'helm) (define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) ;; Smartmodeline conf (setq sml/no-confirm-load-theme t) (setq sml/theme 'dark) (sml/setup) (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 (company-quickhelp yaml-mode web-mode smart-mode-line python-mode markdown-mode helm-projectile helm-ag haskell-mode grandshell-theme flycheck exec-path-from-shell ensime company-go autopair)))) (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. )