;; Emacs initialization file ;; Remember the initialization directory (setq ravi/init-dir (file-name-directory (or load-file-name (buffer-file-name)))) (defun ravi/emacs-file (filename) (expand-file-name filename ravi/init-dir) ) ;; Initialize some customizations early on to avoid flicker (setq warning-suppress-types nil) (set-face-background 'default "black") (set-face-foreground 'default "white") (add-to-list 'default-frame-alist '(background-mode . dark)) (require 'cl) (defun font-candidate (&rest fonts) "Return existing font which first match." (find-if (lambda (f) (find-font (font-spec :name f))) fonts)) (set-face-attribute 'default nil :font (font-candidate '"Inconsolata" "Source Code Pro" "Anonymous Pro")) (when window-system (tooltip-mode -1) (tool-bar-mode -1)) (menu-bar-mode -1) (setq custom-file (concat ravi/init-dir "custom.el")) ;; Initialize package handling: currently using only the official repository and MELPA (setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/") ;("original" . "http://tromey.com/elpa/") ;("org" . "http://orgmode.org/elpa/") ;("marmalade" . "http://marmalade-repo.org/packages/") ("melpa" . "http://melpa.milkbox.net/packages/"))) (add-to-list 'load-path ravi/init-dir) (setq autoload-file (concat ravi/init-dir "loaddefs.el")) (setq package-user-dir (concat ravi/init-dir "elpa")) (package-initialize) (defvar ravi/default-install-packages (list 'yasnippet 'use-package 'bind-key 'diminish) "Libraries that should be installed by default.") (unless package-archive-contents (package-refresh-contents)) (dolist (package ravi/default-install-packages) (unless (package-installed-p package) (package-install package))) ;; Settings from M-x customize (load custom-file 'noerror) (require 'bind-key) (require 'use-package) (require 'diminish) ;; Show full frame windows for certain commands (use-package fullframe :ensure t ) ;; --------------------------------------------------------------------- ;; Stolen from purcell/emacs.d/init-utils.el (defmacro after-load (feature &rest body) "After FEATURE is loaded, evaluate BODY." (declare (indent defun)) `(eval-after-load ,feature '(progn ,@body))) (defun sanityinc/string-all-matches (regex str &optional group) "Find all matches for `REGEX' within `STR', returning the full match string or group `GROUP'." (let ((result nil) (pos 0) (group (or group 0))) (while (string-match regex str pos) (push (match-string group str) result) (setq pos (match-end group))) result)) ;; --------------------------------------------------------------------- (require 'ravi-init-ido) (require 'ravi-init-marks) (require 'ravi-init-appearance) (require 'ravi-init-files) (require 'ravi-init-vc) (require 'ravi-init-function) (require 'ravi-init-insertion) (require 'ravi-init-navigation)