diff --git a/emacs/.emacs b/emacs/.emacs index e191b7a..8364ef1 100644 --- a/emacs/.emacs +++ b/emacs/.emacs @@ -1,4 +1,15 @@ (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) @@ -29,5 +40,71 @@ ;; 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) + +;; 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) + +;; 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 "") 'cycle-window) + +;; Easy terminal +(defun term-split () + "creates terminal window below" + (interactive) + (select-window (split-window-below -7)) + (term "/bin/zsh")) + +(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))) +;; (kill-buffer (current-buffer)))) +;; +;; (advice-add 'term-handle-exit :after #'term-handle-exit--close-buffer) + +;; Latex german +;; (defun latex-german-umlauts () +;; "Sets keys like ä to write \"a" +;; (message "Latex German Umlauts loaded.") +;; (defun local-map (key ins) +;; (local-set-key (kbd key) (lambda () (interactive) `(insert v)))) +;; (local-map "ä" "\"a")) +;; ;;(local-set-key (kbd "ä") (lambda () (interactive) (insert "\"a"))) +;; +;; (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))