dotemacs/init.el

474 lines
18 KiB
EmacsLisp

(add-to-list 'load-path "~/.emacs.d/elisp/")
(add-to-list 'load-path "~/.emacs.d/elisp-git/evil/")
(add-to-list 'load-path "~/.emacs.d/elisp-git/window-numbering/")
(add-to-list 'load-path "~/.emacs.d/elisp-git/evil-snipe/")
(add-to-list 'load-path "~/.emacs.d/elisp-git/git-modes/")
(add-to-list 'load-path "~/.emacs.d/elisp-git/magit/")
(add-to-list 'load-path "~/.emacs.d/elisp-git/yafolding.el/")
(add-to-list 'load-path "~/.emacs.d/user/")
;;;; UTF-8 magic
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)
;;;; Simplify the GUI, thanks http://www.masteringemacs.org/articles/2010/10/04/beginners-guide-to-emacs/
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)
(setq focus-follows-mouse t)
(setq mouse-autoselect-window t)
;;;; Disable linewrapping
(defun line-trunc-set ()
(global-visual-line-mode -1)
(setq-default truncate-partial-width-windows t)
(setq-default truncate-lines t))
(add-hook 'text-mode-hook 'line-trunc-set)
(add-hook 'emacs-lisp-mode-hook 'line-trunc-set)
(add-hook 'evil-mode-hook 'line-trunc-set)
;(global-set-key (kbd "C-x T") 'toggle-truncate-lines)
(global-set-key (kbd "C-x t") 'global-visual-line-mode)
;;;; Tab settings
(setq default-tab-width 4)
;(define-key text-mode-map (kbd "TAB") 'self-insert-command)
(setq-default indent-tabs-mode nil)
;;;; Fix scrolling
(setq scroll-conservatively 10000
scroll-preserve-screen-position t)
(setq auto-window-vscroll nil)
;;; Recenter screen on isearch matches
(add-hook 'isearch-mode-hook 'recenter)
(add-hook 'isearch-update-post-hook 'recenter)
(defadvice isearch-repeat-forward
(after isearch-repeat-forward-recenter activate)
(recenter))
(defadvice isearch-repeat-backward
(after isearch-repeat-backward-recenter activate)
(recenter))
(ad-activate 'isearch-repeat-forward)
(ad-activate 'isearch-repeat-backward)
;;;; While we're at it, let's add that to next-error as well
;;;; (this affects jumping to match from M-x grep , too)
(add-hook 'next-error-hook 'recenter)
;;;; ...and to magit-toggle-section
;;; It'd be really cool to (recenter 3) when you /open/ a section,
;;; and (recenter) when you close a section
(defadvice magit-toggle-section
(after magit-toggle-section-recenter activate)
(recenter 3))
(ad-activate 'magit-toggle-section)
(defadvice magit-unstage-item
(after magit-unstage-item-move)
(next-line))
(ad-activate 'magit-unstage-item)
;;;; Fix Emacs' definition of a sentence
(setq sentence-end-double-space nil)
;;;; Shiny wrap style, thanks Xah Lee
(global-visual-line-mode 1)
;;;; Highlight current line
(global-hl-line-mode 1)
;;;; Custom keys
(global-set-key (kbd "C-y") 'whole-line-or-region-yank)
;(global-set-key (kbd "M-w") 'whole-line-or-region-kill-ring-save)
(global-set-key (kbd "C-w") 'whole-line-or-region-kill-region)
(global-set-key (kbd "C-x C-1") 'delete-other-windows)
(global-set-key (kbd "C-x C-2") 'split-window-below)
(global-set-key (kbd "C-x C-3") 'split-window-right)
(global-set-key (kbd "C-x C-0") 'delete-window)
;(global-set-key (kbd "C-`") 'point-to-register)
;(global-set-key (kbd "C-'") 'jump-to-register)
(global-set-key (kbd "C-h") 'backward-delete-char)
(global-set-key (kbd "C-x C-d") 'dired)
(global-set-key (kbd "C-x l") 'helm-mini)
;(global-set-key (kbd "C-x l") 'recentf-open-files)
;(global-set-key (kbd "C-x") 'backward-kill-word)
;(global-set-key (kbd "C-,") 'string-rectangle 'TAB)
(global-unset-key (kbd "C-u"))
(global-unset-key (kbd "C-x d"))
(global-set-key (kbd "C-x df") 'delete-frame)
;;;; make-frame key is after Helm's config
(global-set-key (kbd "C-x z") 'switch-to-buffer)
(global-set-key (kbd "C-x b") 'eval-buffer)
(global-unset-key (kbd "C-c s"))
(global-set-key (kbd "C-x T") 'neotree-toggle)
(global-set-key (kbd "C-x O") 'org-mode)
;;;; Just hit y or n to answer yes or no prompts! Shiny!
(defalias 'yes-or-no-p 'y-or-n-p)
(setq backup-by-copying t
backup-directory-alist
'(("." . "~/.emacs.d/saves/"))
delete-old-versions t
kept-new-versions 6
kept-old-versions 2
version-control t)
;;;; Fix multi-line indenting - thanks forcer!
;(defun hn/add-tab-in-front-of-every-line-in-region (beg end) (interactive "r")
;(save-excursion (goto-char beg) (goto-char (point-at-bol)) (while (re-search-forward "^" end t) (insert "\t"))))
;(global-set-key (kbd "C-.") 'hn/add-tab-in-front-of-every-line-in-region)
;;;; Indicate god-mode with cursor color
;(defun my-update-cursor ()
;(set-cursor-color
;(if (or god-local-mode buffer-read-only) "#ffffff" "#ff0000")))
;(add-hook 'god-mode-enabled-hook 'my-update-cursor)
;(add-hook 'god-mode-disabled-hook 'my-update-cursor)
;;;; Transparent Emacs window
;;(set-frame-parameter (selected-frame) 'alpha '(<active> [<inactive>]))
;(set-frame-parameter (selected-frame) 'alpha '(90 50))
;(add-to-list 'default-frame-alist '(alpha 90 50))
;(add-to-list 'load-path "~/.emacs.d/elisp/")
;;;; MELPA
;(require 'package)
;(add-to-list 'package-archives
; '("melpa" . "http://melpa.milkbox.net/packages/") t)
;(require 'package)
;(add-to-list 'package-archives
; '("melpa-stable" . "http://melpa-stable.milkbox.net/packages/") t)
(setq browse-url-browser-function 'browse-url-xdg-open)
;;;; Marmalade
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "https://marmalade-repo.org/packages/"))
;//// //// //// //// //// ////
;//// PACKAGE INITIALIZE ////
;//// //// //// //// //// ////
(package-initialize)
;;;; Set theme
(load-theme 'monokai t)
;;;; auto-complete
;; (require 'auto-complete)
;; (global-auto-complete-mode)
;; (add-hook 'text-mode-hook 'auto-complete-mode)
;; (add-hook 'Lilypond-mode-hook 'auto-complete-mode)
;; (add-hook 'emacs-lisp-mode-hook 'auto-complete-mode)
;; (add-hook 'lisp-mode-hook 'auto-complete-mode)
;; (add-hook 'scheme-mode-hook 'auto-complete-mode)
;; (add-hook 'inferior-scheme-mode-hook 'auto-complete-mode)
;;;; company
(require 'company)
;;;; God Mode
;(require 'god-mode)
;;;; Evil mode
(require 'evil)
(evil-mode 1)
;; Want something to switch between evil and god-model, instead of this.
;; They say there's a plugin for it...
(global-set-key (kbd "C-x e") (evil-mode))
(define-key evil-normal-state-map "zR" 'yafolding-show-all)
(define-key evil-normal-state-map "zM" 'yafolding-hide-all)
(define-key evil-normal-state-map "zo" 'yafolding-show-element)
(define-key evil-normal-state-map "zc" 'yafolding-hide-element)
;(global-set-key (kbd "g C-g") 'count-words-region)
; The story so far - in evil-normal-state-map, I set 'i' to evil-previous-visual-line, 'k' to evil-next-visual-line, 'j' to evil-backward-char. Note that I forgot to set 'h' to insert at first...but that's not all - later I realized this didn't affect Visual mode :p 4 more lines for that. Next...d/c didn't work with ijkl. 4 more lines for evil-operator-state-map. After that - you usually want visual-line up/down movement, but _not_ when you hit d-j/k (or d-i/k)! So, in evil-operator-state-map, i and k are now vanilla evil-previous/next-line. Set gi/gk to evil-previous/next-line in normal and visual states, and to evil-previous/next-visual-line in operator state - 2 new lines to each group of 4.
(define-key evil-normal-state-map "gi" 'evil-previous-visual-line)
(define-key evil-normal-state-map "gk" 'evil-next-visual-line)
(define-key evil-normal-state-map "i" 'evil-previous-line)
(define-key evil-normal-state-map "k" 'evil-next-line)
(define-key evil-normal-state-map "j" 'evil-backward-char)
(define-key evil-normal-state-map "h" 'evil-insert)
(define-key evil-visual-state-map "gi" 'evil-previous-visual-line)
(define-key evil-visual-state-map "gk" 'evil-next-visual-line)
(define-key evil-visual-state-map "i" 'evil-previous-line)
(define-key evil-visual-state-map "k" 'evil-next-line)
(define-key evil-visual-state-map "j" 'evil-backward-char)
(define-key evil-visual-state-map "h" 'evil-insert)
(define-key evil-operator-state-map "gi" 'evil-previous-visual-line)
(define-key evil-operator-state-map "gk" 'evil-next-visual-line)
(define-key evil-operator-state-map "i" 'evil-previous-line)
(define-key evil-operator-state-map "k" 'evil-next-line)
(define-key evil-operator-state-map "j" 'evil-backward-char)
;(define-key evil-operator-state-map "h" 'evil-insert)
; evil-inner-tag ?
(define-key evil-operator-state-map "hW" 'evil-inner-WORD)
(define-key evil-operator-state-map "hw" 'evil-inner-word)
(define-key evil-operator-state-map "h\(" 'evil-inner-paren)
(define-key evil-operator-state-map "h\)" 'evil-inner-paren)
(define-key evil-operator-state-map "h\{" 'evil-inner-curly)
(define-key evil-operator-state-map "h\}" 'evil-inner-curly)
(define-key evil-operator-state-map "h<" 'evil-inner-angle)
(define-key evil-operator-state-map "h>" 'evil-inner-angle)
(define-key evil-operator-state-map "h\[" 'evil-inner-bracket)
(define-key evil-operator-state-map "h\]" 'evil-inner-bracket)
(define-key evil-operator-state-map "hs" 'evil-inner-sentence)
(define-key evil-operator-state-map "hp" 'evil-inner-paragraph)
(define-key evil-operator-state-map "h`" 'evil-inner-back-quote)
(define-key evil-operator-state-map "h\"" 'evil-inner-double-quote)
(define-key evil-operator-state-map "h'" 'evil-inner-single-quote)
(define-key evil-motion-state-map "gi" 'evil-previous-visual-line)
(define-key evil-motion-state-map "gk" 'evil-next-visual-line)
;;;; set C-h to backspace when editing commands and searching
(defun kill-start-of-line () "Kill from point to start of line."
(interactive)
(kill-line 0))
(define-key evil-insert-state-map (kbd "C-u") 'kill-start-of-line)
;;;; evil-snipe
(require 'evil-snipe)
;(define-key evil-normal-state-map "f" 'evil-snipe-s)
;(define-key evil-operator-state-map "f" 'evil-snipe-s)
;(define-key evil-motion-state-map "f" 'evil-snipe-s)
;
;(define-key evil-normal-state-map "F" 'evil-snipe-S)
;(define-key evil-operator-state-map "F" 'evil-snipe-S)
;(define-key evil-motion-state-map "F" 'evil-snipe-S)
;
;(define-key evil-normal-state-map "s" 'evil-substitute)
;(define-key evil-normal-state-map "S" 'evil-change-whole-line)
(setq evil-snipe-count-scope 'letters)
;;;; s<RET>, S<RET>, ; and , don't work with this
;(setq evil-snipe-scope 'buffer)
;;;; This doesn't take two chars by default, which combined with unimplemented evil-snipe-count-scope 'vertical makes it nearly useless as a replacement for fFtT;
(evil-snipe-replace-evil)
;;;; buggy :(
;(setq evil-snipe-count-scope 'letters)
;;;; not implemented Q_Q
;(setq evil-snipe-count-scope 'vertical)
(global-evil-snipe-mode 1)
;;;; org
(require 'org)
; evil-ify org-mode
(define-key outline-mode-map (kbd "M-c i") 'outline-up-heading)
(define-key outline-mode-map (kbd "M-c j") 'org-backward-heading-same-level)
(define-key outline-mode-map (kbd "M-c l") 'org-forward-heading-same-level)
(define-key outline-mode-map (kbd "M-c n") 'outline-next-visible-heading)
(define-key outline-mode-map (kbd "M-c p") 'outline-previous-visible-heading)
(setq org-M-RET-may-split-line 'nil)
(add-hook 'org-mode-hook 'org-display-inline-images)
;;;; Ace Jump mode
(require 'ace-jump-mode)
;(define-key global-map (kbd "C-c SPC") 'ace-jump-mode)
(define-key evil-normal-state-map (kbd "M-SPC") 'ace-jump-mode)
(global-set-key (kbd "M-SPC") 'ace-jump-mode)
;;;; launch-files
(require 'launch)
(add-hook 'dired 'turn-on-launch-mode)
(global-set-key (kbd "M-l") 'launch-files-dired)
;;;; relative-line-numbers
(require 'relative-line-numbers)
;(setq relative-line-numbers-motion-function 'vertical-motion)
(setq relative-line-numbers-motion-function 'forward-visible-line)
(global-relative-line-numbers-mode 1)
;;;; Enable Ido mode
;(require 'ido)
;(ido-mode t)
;(define-key ido-buffer-completion-map (kbd "C-h") 'ido-delete-backward-updir)
;(setq ido-enable-flex-matching t)
;;(global-set-key (kbd "DEL") 'ido-delete-backward-updir)
;;;; smex - Ido for Alt-x (M-x)
;(require 'smex)
;(smex-initialize)
;(global-set-key (kbd "M-x") 'smex)
;;;; Ido-ubiquitous
;(require 'ido-ubiquitous)
;(ido-ubiquitous-mode 1)
;;;; Helm
(require 'helm-config)
(require 'helm-grep)
(global-set-key (kbd "C-c h") 'helm-mode)
(define-key helm-map (kbd "C-h") 'backward-delete-char)
(define-key helm-map (kbd "C-w") 'backward-kill-word)
(global-set-key (kbd "M-x") 'helm-M-x)
(global-set-key (kbd "<menu>") 'helm-M-x)
;(helm-mode 1)
(global-set-key (kbd "C-c C-h") 'helm-command-prefix)
(global-set-key (kbd "C-x cl") 'count-lines-page)
(global-set-key (kbd "C-x cf") 'make-frame)
;(global-set-key (kbd "C-x cw") 'count-words-region)
;; stop making helm tab-complete in ERC
(setq helm-mode-no-completion-in-region-in-modes 'erc-mode)
(add-to-list 'helm-mode-no-completion-in-region-in-modes 'erc-mode)
(setq helm-mode-handle-completion-in-region 'nil)
;;;; Helm completion in eshell
;(add-hook 'eshell-mode-hook
; #'(lambda ()
; (define-key eshell-mode-map
; [remap eshell-pcomplete]
; 'helm-esh-pcomplete)))
;;;; hippie-expand
(require 'hippie-exp)
;;;; zlc
;(require 'zlc)
;(zlc-mode t)
;;;; Ediff stuff
(setq ediff-window-setup-function 'ediff-setup-windows-plain)
;;;; ERC
;(setq erc-log-channels-directory "~/.emacs.d/erc/logs/")
;(setq erc-log-write-after-insert t)
;(erc-fill-mode 'nil)
(require 'erc)
(define-key erc-mode-map (kbd "M-c c") 'erc-iswitchb)
(define-key erc-mode-map (kbd "M-c x") 'erc-track-switch-buffer)
;(define-key erc-mode-map (kbd "TAB") 'completion-at-point)
;(erc-fill-mode -1)
;(add-hook 'erc-join-hook (lambda () (erc-fill-mode -1)))
;;;; fullscreen-mode
(require 'fullscreen-mode)
(fullscreen-mode 1)
;;;; magit
(require 'magit)
(global-set-key (kbd "C-x m") 'magit-status)
;;;; recentf
(require 'recentf)
(recentf-mode 1)
(setq recentf-max-menu-items 500)
(setq recentf-max-saved-items nil)
(setq recentf-save-file "/home/anon/.emacs.d/recentf")
(global-set-key "\C-x\ \C-r" 'recentf-open-files)
;;;; Session.el
(require 'session)
(add-hook 'after-init-hook 'session-initialize)
;;;; stumpwm-mode
(require 'stumpwm-mode)
;;;; sudo-edit
(require 'sudo-edit)
;;;; text size change
(set-face-attribute 'default nil :font "-outline-Bitstream Vera Sans Mono-normal-normal-normal-mono-12-*-*-*-c-*-iso8859-1")
;;;; Win-switch
(require 'win-switch)
(global-set-key "\C-xo" 'win-switch-dispatch)
(win-switch-setup-keys-ijkl)
(setq win-switch-idle-time 0.5)
(setq win-switch-other-window-first nil)
;(setq win-switch-other-window-first nil)
;;;; window-numbering
(require 'window-numbering)
(window-numbering-mode 1)
;;;; yafolding.el
(require 'yafolding)
(add-hook 'prog-mode-hook
(lambda () (yafolding-mode)))
;;;; Here be customize dragons
(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 bold shadow italic underline bold bold-italic bold])
'(ansi-term-color-vector [unspecified "#1F1611" "#660000" "#144212" "#EFC232" "#5798AE" "#BE73FD" "#93C1BC" "#E6E1DC"])
'(bongo-enabled-backends (quote (vlc timidity)))
'(custom-safe-themes (quote ("4aee8551b53a43a883cb0b7f3255d6859d766b6c5e14bcb01bed572fcbef4328" "d809ca3cef02087b48f3f94279b86feca896f544ae4a82b523fba823206b6040" "a507b9ca4a605d5256716da70961741b9ef9ec3246041a4eb776102e8df18418" "2affb26fb9a1b9325f05f4233d08ccbba7ec6e0c99c64681895219f964aac7af" "65ae93029a583d69a3781b26044601e85e2d32be8f525988e196ba2cb644ce6a" "0795e2c85394140788d72d34969be4acb305e4a54149e7237787d9df27832fbb" "8aebf25556399b58091e533e455dd50a6a9cba958cc4ebb0aab175863c25b9a4" "47bff723f2aca3a9a5726abcc52a7cc4192b556dd80b3f773589994d2ed24d16" "013e87003e1e965d8ad78ee5b8927e743f940c7679959149bbee9a15bd286689" "ad9fc392386f4859d28fe4ef3803585b51557838dbc072762117adad37e83585" "1011be33e9843afd22d8d26b031fbbb59036b1ce537d0b250347c19e1bd959d0" "784d5ee4d33befba6a21702ead67f98346770be7cc17ab64952ae3866a403743" "930a202ae41cb4417a89bc3a6f969ebb7fcea5ffa9df6e7313df4f7a2a631434" "0e121ff9bef6937edad8dfcff7d88ac9219b5b4f1570fd1702e546a80dba0832" "442c946bc5c40902e11b0a56bd12edc4d00d7e1c982233545979968e02deb2bc" "e16a771a13a202ee6e276d06098bc77f008b73bbac4d526f160faa2d76c1dd0e" "9eb5269753c507a2b48d74228b32dcfbb3d1dbfd30c66c0efed8218d28b8f0dc" "c4e6fe8f5728a5d5fd0e92538f68c3b4e8b218bcfb5e07d8afff8731cc5f3df0" "c739f435660ca9d9e77312cbb878d5d7fd31e386a7758c982fa54a49ffd47f6e" "97a2b10275e3e5c67f46ddaac0ec7969aeb35068c03ec4157cf4887c401e74b1" "024b0033a950d6a40bbbf2b1604075e6c457d40de0b52debe3ae994f88c09a4a" default)))
'(debug-on-error nil)
'(diary-entry-marker (quote font-lock-variable-name-face))
'(emms-mode-line-icon-image-cache (quote (image :type xpm :ascent center :data "/* XPM */
static char *note[] = {
/* width height num_colors chars_per_pixel */
\" 10 11 2 1\",
/* colors */
\". c #358d8d\",
\"# c None s None\",
/* pixels */
\"###...####\",
\"###.#...##\",
\"###.###...\",
\"###.#####.\",
\"###.#####.\",
\"#...#####.\",
\"....#####.\",
\"#..######.\",
\"#######...\",
\"######....\",
\"#######..#\" };")))
'(emms-player-list (quote (emms-player-vlc emms-player-ogg123 emms-player-mplayer-playlist emms-player-mplayer emms-player-mpg321)))
'(emms-playlist-mode-center-when-go t)
'(erc-fill-mode nil)
'(erc-generate-log-file-name-function (quote erc-generate-log-file-name-network))
'(erc-log-channels-directory "~/.emacs.d/erc/logs/")
'(erc-log-mode t)
'(erc-log-write-after-insert t)
'(erc-modules (quote (autojoin completion list log menu ring stamp ercn netsplit fill button match track readonly networks autojoin noncommands irccontrols move-to-prompt stamp)))
'(erc-nick (quote ("HisaoNakai" "[Batou]" "[Togusa]" "[2501]")))
'(erc-stamp-mode t)
'(erc-timestamp-format-left "
[%Y %m %e %T %N]
")
'(erc-timestamp-format-right nil)
'(fci-rule-character-color "#452E2E")
'(gnus-logo-colors (quote ("#0d7b72" "#adadad")))
'(gnus-mode-line-image-cache (quote (image :type xpm :ascent center :data "/* XPM */
static char *gnus-pointer[] = {
/* width height num_colors chars_per_pixel */
\" 18 13 2 1\",
/* colors */
\". c #358d8d\",
\"# c None s None\",
/* pixels */
\"##################\",
\"######..##..######\",
\"#####........#####\",
\"#.##.##..##...####\",
\"#...####.###...##.\",
\"#..###.######.....\",
\"#####.########...#\",
\"###########.######\",
\"####.###.#..######\",
\"######..###.######\",
\"###....####.######\",
\"###..######.######\",
\"###########.######\" };")))
'(session-registers (quote (t 45 61 92 96 region (97 . 122))))
'(session-use-package t nil (session))
(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.
)