;;; ravi-init-appearance.el --- Emacs appearance ;; Copyright (C) 2013 ;; Author: ;; Keywords: ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;; Commentary: ;; Customization of emacs appearance ;;; Code: ;; No splash screen please (setq inhibit-startup-message t) ;; Allow pasting selection outside of Emacs (setq x-select-enable-clipboard t) ;; Show keystrokes in progress (setq echo-keystrokes 0.1) ;; Real emacs knights don't use shift to mark things (setq shift-select-mode nil) ;; Enable syntax highlighting for older Emacsen that have it off (global-font-lock-mode t) (setq font-lock-maximum-decoration t) ;; Sounds. ;; Turn off sound. (setq bell-volume 0) (setq sound-alist nil) (set-face-background 'cursor "LightSteelBlue1") ;; Answering just 'y' or 'n' will do (defalias 'yes-or-no-p 'y-or-n-p) ;; Customization of modeline. (line-number-mode 1) (column-number-mode 1) (display-time) ;; Change the way the buffer name is displayed in the modeline. (setq-default mode-line-buffer-identification '("%17b")) ;; Undo/redo window configuration with C-c / (winner-mode 1) ;; Never insert tabs (set-default 'indent-tabs-mode nil) ;; Show me empty lines after buffer end (replaced, see below) ;(set-default 'indicate-empty-lines t) (use-package whitespace :init (setq whitespace-style '(face trailing indentation tabs)) :config (progn (global-whitespace-mode 1) (add-hook 'before-save-hook 'whitespace-cleanup) ) ; No need for 'ensure: t' since whitespace mode is built in :diminish global-whitespace-mode ) ;; Handling end of files. (setq require-final-newline t) ;; Prevent addition of lines at end of file when down arrow is pressed. (setq next-line-add-newlines nil) ;; Kill the entire line, please (setq kill-whole-line t) ;; Easily navigate sillycased words (global-subword-mode 1) ;; Keep cursor away from edges when scrolling up/down (use-package smooth-scrolling :ensure t ) ;; Enable automatic indentation, if possible (bind-key "" 'newline-and-indent prog-mode-map) (bind-key "" 'newline-and-indent emacs-lisp-mode-map) ;; Automatic indentation of yanked text (dolist (command '(yank yank-pop)) (eval `(defadvice ,command (after indent-region activate) (and (not current-prefix-arg) (member major-mode '(emacs-lisp-mode lisp-mode clojure-mode scheme-mode haskell-mode ruby-mode rspec-mode python-mode c-mode c++-mode objc-mode latex-mode plain-tex-mode)) (let ((mark-even-if-inactive transient-mark-mode)) (indent-region (region-beginning) (region-end) nil)))))) ;; Keep my navigation simple (setq line-move-visual nil) ;; Represent undo-history as an actual tree (visualize with C-x u) (use-package undo-tree :init (setq undo-tree-mode-lighter "") :config (progn (global-undo-tree-mode) (setq undo-tree-auto-save-history t) (setq undo-tree-history-directory-alist `(("." . ,(expand-file-name "undotree/" (ravi/emacs-file "past"))))) ) :ensure t ) ;; Discover emacs ;; Since discover.el replaces keymaps wholesale for "C-x r" and "M-s", it overrides ;; our additions to them. So we use guide-key for "C-x r" and "M-s". (use-package discover :config (progn (add-hook 'dired-mode-hook 'discover-turn-on-in-dired) ) :disabled t ;; unstable API and hosing user-provided keybindings :ensure t ) ;; Help for prefix key-bindings not in discover-mode (use-package guide-key :config (progn (setq guide-key/guide-key-sequence '("C-c p" ;; projectile "C-c d" ;; doxymacs "C-x 4" ;; other-window "C-x r" ;; rectangles/registers "M-s" ;; isearch )) (guide-key-mode 1) ) :diminish guide-key-mode :ensure t ) (bind-key "C-h a" 'apropos) (use-package popwin :commands popwin-mode :config (progn (push '("*Pp Eval Output*" :height 15) popwin:special-display-config)) :ensure t ) (use-package import-popwin :bind (("M-i" . import-popwin)) :ensure t ) (provide 'ravi-init-appearance) ;;; ravi-init-appearance.el ends here