configfiles/emacs/.emacs

125 lines
4.1 KiB
Plaintext

(package-initialize)
(defun ensure-packages-installed (packages)
"Ensure packages are installed"
(mapcar
(lambda (package)
(if (package-installed-p package)
nil
(if (y-or-n-p (format "Package %s is missing. Install it? " package))
(package-install package)
package)))
packages))
(require 'package)
(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])
'(blink-cursor-mode nil)
'(custom-enabled-themes (quote (wombat)))
'(global-evil-surround-mode t)
'(inhibit-startup-screen t)
'(menu-bar-mode nil)
'(package-selected-packages
(quote
(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.
'(default ((t (:inherit nil :stipple nil :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 113 :width normal :foundry "PfEd" :family "Inconsolata")))))
;; ensure repo cache is up1date
(or (file-exists-p package-user-dir)
(package-refresh-contents))
(ensure-packages-installed '(org evil evil-surround magit evil-magit auto-complete))
;; Evil mode <3
(require 'evil)
(evil-mode t)
;; auto-complete
(require 'auto-complete)
(require 'auto-complete-config)
(ac-config-default)
;; Yasnippet
(require 'yasnippet)
(yas-global-mode 1)
;; Window movement
(global-set-key (kbd "C-x <up>") 'windmove-up)
(global-set-key (kbd "C-x <down>") 'windmove-down)
(global-set-key (kbd "C-x <left>") 'windmove-left)
(global-set-key (kbd "C-x <right>") 'windmove-right)
;; Magit
(global-set-key (kbd "C-x g") 'magit-status)
;; Window cycling
(defun cycle-window ()
"cycles windows"
(interactive)
(select-window (next-window)))
(global-set-key (kbd "<C-tab>") 'cycle-window)
;; Easy terminal
(defun term-split ()
"creates terminal window below"
(interactive)
(let ((window (split-window-below -7)))
(select-window window)
(term "/bin/zsh")))
;(set-window-dedicated-p window t)))
(global-set-key (kbd "C-x t") 'term-split)
;; 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
(defun evil-is-insert () (string= evil-state "insert"))
(defun latex-german-umlauts ()
"Sets keys like ä to write \"a"
(message "Latex German Umlauts loaded.")
(local-set-key (kbd "ä") (lambda () (interactive) (when (evil-is-insert) (insert "\"a"))))
(local-set-key (kbd "ö") (lambda () (interactive) (when (evil-is-insert) (insert "\"o"))))
(local-set-key (kbd "ü") (lambda () (interactive) (when (evil-is-insert) (insert "\"u"))))
(local-set-key (kbd "Ä") (lambda () (interactive) (when (evil-is-insert) (insert "\"A"))))
(local-set-key (kbd "Ö") (lambda () (interactive) (when (evil-is-insert) (insert "\"O"))))
(local-set-key (kbd "Ü") (lambda () (interactive) (when (evil-is-insert) (insert "\"U"))))
(local-set-key (kbd "ß") (lambda () (interactive) (when (evil-is-insert) (insert "\"s")))))
(add-hook 'latex-mode-hook 'latex-german-umlauts)
;; Split windows horizontally preferred
(setq split-height-threshold 6)
(setq split-width-threshold 20)
;; Overlay windows
(add-to-list 'display-buffer-alist
'("*Apropos*" display-buffer-same-window))
(add-to-list 'display-buffer-alist
'("*Help*" display-buffer-same-window))