(package-initialize) (require 'package) ;; Quote (setq initial-scratch-message ";; Simplicity and elegance are unpopular because\n;; they require hard work and discipline to achieve\n;; and education to be appreciated.\n;;\n;; - Dijkstra\n\n") ;; Default frame size (setq initial-frame-alist '( (width . 110) (height . 40) )) ;(push '("marmalade" . "http://marmalade-repo.org/packages/") package-archives) (push '("melpa" . "http://melpa.milkbox.net/packages/") package-archives) (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. '(ansi-color-faces-vector [default default default italic underline success warning error]) '(ansi-color-names-vector ["#242424" "#e5786d" "#95e454" "#cae682" "#8ac6f2" "#333366" "#ccaa8f" "#f6f3e8"]) '(blink-cursor-mode nil) '(custom-enabled-themes (quote (heroku))) '(custom-safe-themes (quote ("4f2ede02b3324c2f788f4e0bad77f7ebc1874eff7971d2a2c9b9724a50fb3f65" default))) '(global-evil-surround-mode t) '(inhibit-startup-screen t) '(menu-bar-mode nil) '(package-selected-packages (quote (centered-cursor-mode ivy avy heroku-theme auto-complete use-package yasnippet evil-surround org evil-magit magit makefile-runner evil))) '(scroll-bar-mode nil) '(tool-bar-mode nil)) (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. ) ;; ensure repo cache is up1date (or (file-exists-p package-user-dir) (package-refresh-contents)) ;; Install use-package (defun ensure-package-installed (package) "Ensure packages are installed" (if (package-installed-p package) nil (progn (package-refresh-contents) (package-install package)))) (ensure-package-installed 'use-package) ;; *.tex files are Latex-Files (add-to-list 'auto-mode-alist '("\\.py\\'" . LaTeX-mode)) ;; theme (use-package heroku-theme :ensure t) ;; Org-mode (use-package org :ensure t) ;; Evil-mode (use-package evil :ensure t :demand t :config (evil-mode 1) (setq evil-ex-substitute-global t)) ;; Auto-Complete (use-package auto-complete :ensure t :demand t :config (progn (require 'auto-complete-config) (ac-config-default))) ;; ivy (use-package ivy :ensure t :demand t :config (progn (ivy-mode 1) (setq ivy-use-virtual-buffers t) (setq ivy-count-format "(%d/%d) ") (define-key ivy-minibuffer-map (kbd "") 'ivy-immediate-done))) ;; Neotree (use-package neotree :ensure t :demand t :bind ("C-x n" . neotree-show) :config (evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter) (evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-enter) (evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter) (evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide) (add-hook 'neo-enter-hook (lambda (type path arg) (if (equal type 'file) (neotree-hide))))) ;; Cursor centered (use-package centered-cursor-mode :ensure t :demand t :disabled :config (global-centered-cursor-mode)) ;; Yasnippet (use-package yasnippet :ensure t :demand t :config (yas-global-mode 1)) ;; avy (use-package avy :ensure t :demand t :bind ("C-s" . avy-goto-word-0) :config (progn (setq avy-keys '(?a ?s ?d ?f ?g ?q ?w ?e ?r ?t ?y ?x ?c ?v ?z ?u ?i ?o ?p ?h ?j ?k ?l ?b ?n ?m)))) ;; Magit (use-package magit :ensure t :bind ("C-x g" . magit-status)) ;; Easy terminal (setq my/default-shell (or (executable-find "zsh") (executable-find "bash"))) (defun term-split () "creates terminal window below" (interactive) (let ((window (split-window-below -7))) (select-window window) (term my/default-shell))) (use-package term :bind ("C-x t" . term-split)) ;; tabbing (doesn't really work yet) (setq-default indent-tabs-mode t) (setq-default tab-width 4) (setq-default LateX-indent-level 4) ;; Activate line numbers (global-linum-mode t) ;; compilation buffer ; Set buffer scrolling (setq compilation-scroll-output 'first-error) ; kill window if successfull ;(defun bury-compile-buffer-if-successful (buffer string) ; "Bury a compilation buffer if succeeded without warnings " ; (when (and ; (buffer-live-p buffer) ; (string-match "compilation" (buffer-name buffer)) ; (string-match "finished" string) ; (not ; (with-current-buffer buffer ; (goto-char (point-min)) ; (search-forward "warning" nil t)))) ; (run-with-timer 1 nil ; (lambda (buf) ; (bury-buffer buf) ; (switch-to-prev-buffer (get-buffer-window buf) 'kill)) ; buffer))) ;(add-hook 'compilation-finish-functions 'bury-compile-buffer-if-successful) ; set window height (setq compilation-window-height 10) (defun my-compilation-hook () (when (not (get-buffer-window "*compilation*")) (save-selected-window (save-excursion (let* ((w (split-window-vertically)) (h (window-height w))) (select-window w) (switch-to-buffer "*compilation*") (shrink-window (- h compilation-window-height))))))) (add-hook 'compilation-mode-hook 'my-compilation-hook) ;; Window movement (global-set-key (kbd "C-x ") 'windmove-up) (global-set-key (kbd "C-x ") 'windmove-down) (global-set-key (kbd "C-x ") 'windmove-left) (global-set-key (kbd "C-x ") 'windmove-right) (defun cycle-window () "cycles windows" (interactive) (select-window (next-window))) (global-set-key (kbd "") 'cycle-window) ;; Kill term buffer on exit ;(defun term-handle-exit--close-buffer (&rest args) ; (when (null (get-buffer-process (current-buffer))) ; (progn ; (let (window (get-buffer-window (current-buffer)) ; (when (window-dedicated-p )) ; (kill-buffer (current-buffer)) ; Fix... ; (advice-add 'term-handle-exit :after #'term-handle-exit--close-buffer) ;; Latex german (quail-define-package "latex-german" "UTF-8" "LaGe" t "Transforms umlauts to the better latex notation. ä -> \"a ö -> \"o ü -> \"u Ä -> \"A Ö -> \"O Ü -> \"U ß -> \"s" nil t nil nil nil nil nil nil nil nil t) (quail-define-rules ("ä" ["\"a"]) ("ö" ["\"o"]) ("ü" ["\"u"]) ("Ä" ["\"A"]) ("Ö" ["\"O"]) ("Ü" ["\"U"]) ("ß" ["\"s"]) ) (add-hook 'latex-mode-hook (lambda () (set-input-method "latex-german") (local-set-key "\"" 'self-insert-command))) ;; Split windows horizontally preferred (setq split-height-threshold 6) (setq split-width-threshold 20) ;; Overlay windows (What does it do?) (add-to-list 'display-buffer-alist '("*Apropos*" display-buffer-same-window)) (add-to-list 'display-buffer-alist '("*Help*" display-buffer-same-window)) ;; Change all prompts to y or n (fset 'yes-or-no-p 'y-or-n-p)