* Introduction
-Most config are just copied from [[https://github.com/howardabrams/dot-files][howardabrams]]'s dotfiles
+Most config are just copied from [[https://github.com/howardabrams/dot-files][howardabrams]]'s and [[https://github.com/abo-abo/oremacs][abo-abo's]] dotfiles
* Basic Settings
#+END_SRC
-** Windows Setting
+** General Setting
Disable scroll bar, tool-bar and menu-bar
(defalias 'yes-or-no-p 'y-or-n-p)
(show-paren-mode 1)
+ (global-set-key (kbd "<s-return>") 'toggle-frame-fullscreen)
+
+#+END_SRC
+
+Switch the focus to help window when it appears
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (setq help-window-select t)
+
#+END_SRC
* Package Management Tools
(if window-system
(when sd/fixed-font-family
(set-frame-font sd/fixed-font-family)
- (set-face-attribute 'default nil :font sd/fixed-font-family :height 140)
+ (set-face-attribute 'default nil :font sd/fixed-font-family :height 120)
(set-face-font 'default sd/fixed-font-family)))
#+END_SRC
:ensure t
:commands worf-mode
:init (add-hook 'org-mode-hook 'worf-mode)
- :config
- (define-key worf-mode-map "[" nil)
- (define-key worf-mode-map "]" nil)
- (define-key worf-mode-map (kbd "M-[") 'worf-backward)
- (define-key worf-mode-map (kbd "M-]") 'worf-forward))
+ ;; :config
+ ;; (define-key worf-mode-map "[" nil)
+ ;; (define-key worf-mode-map "]" nil)
+ ;; (define-key worf-mode-map (kbd "M-[") 'worf-backward)
+ ;; (define-key worf-mode-map (kbd "M-]") 'worf-forward)
+ )
#+END_SRC
#+END_SRC
+** Ido-ubiquitous
+
+Use [[https://github.com/DarwinAwardWinner/ido-ubiquitous][ido-ubiquitous]] for ido everywhere. It makes =describe-function= can also use ido
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (use-package ido-ubiquitous
+ :ensure t
+ :init
+ (setq magit-completing-read-function 'magit-ido-completing-read)
+ (setq gnus-completing-read-function 'gnus-ido-completing-read)
+ :config
+ (ido-ubiquitous-mode 1))
+
+#+END_SRC
+
* Misc Settings
+
+** [[https://github.com/abo-abo/hydra][Hydra]]
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (use-package hydra
+ :ensure t)
+
+#+END_SRC
+
+*** Font Zoom
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (defhydra sd/font-zoom (global-map "<f2>")
+ "zoom"
+ ("g" text-scale-increase "in")
+ ("l" text-scale-decrease "out"))
+
+#+END_SRC
+
+*** Windmove Splitter
+
+Refer [[https://github.com/abo-abo/hydra/blob/master/hydra-examples.el][hydra-example]], to enlarge or shrink the windows splitter
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (defun hydra-move-splitter-left (arg)
+ "Move window splitter left."
+ (interactive "p")
+ (if (let ((windmove-wrap-around))
+ (windmove-find-other-window 'right))
+ (shrink-window-horizontally arg)
+ (enlarge-window-horizontally arg)))
+
+ (defun hydra-move-splitter-right (arg)
+ "Move window splitter right."
+ (interactive "p")
+ (if (let ((windmove-wrap-around))
+ (windmove-find-other-window 'right))
+ (enlarge-window-horizontally arg)
+ (shrink-window-horizontally arg)))
+
+ (defun hydra-move-splitter-up (arg)
+ "Move window splitter up."
+ (interactive "p")
+ (if (let ((windmove-wrap-around))
+ (windmove-find-other-window 'up))
+ (enlarge-window arg)
+ (shrink-window arg)))
+
+ (defun hydra-move-splitter-down (arg)
+ "Move window splitter down."
+ (interactive "p")
+ (if (let ((windmove-wrap-around))
+ (windmove-find-other-window 'up))
+ (shrink-window arg)
+ (enlarge-window arg)))
+
+#+END_SRC
+
+*** hydra-window
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (winner-mode 1)
+
+ (defhydra sd/hydra-window (:color red :columns nil)
+ "window"
+ ("h" windmove-left nil)
+ ("j" windmove-down nil)
+ ("k" windmove-up nil)
+ ("l" windmove-right nil)
+ ("H" hydra-move-splitter-left nil)
+ ("J" hydra-move-splitter-down nil)
+ ("K" hydra-move-splitter-up nil)
+ ("L" hydra-move-splitter-right nil)
+ ("v" (lambda ()
+ (interactive)
+ (split-window-right)
+ (windmove-right))
+ "vert")
+ ("x" (lambda ()
+ (interactive)
+ (split-window-below)
+ (windmove-down))
+ "horz")
+ ("o" delete-other-windows "one" :exit t)
+ ("a" ace-window "ace")
+ ("s" ace-swap-window "swap")
+ ("d" ace-delete-window "ace-one" :exit t)
+ ("i" ace-maximize-window "ace-one" :exit t)
+ ("b" ido-switch-buffer "buf")
+ ("m" headlong-bookmark-jump "bmk")
+ ("q" nil "cancel")
+ ("u" (progn (winner-undo) (setq this-command 'winner-undo)) "undo")
+ ("r" (progn (winner-redo) (setq this-command 'winner-redo)) "redo")
+ ("f" nil))
+
+ (global-unset-key (kbd "M-o"))
+ (global-set-key (kbd "M-o") 'sd/hydra-window/body)
+
+#+END_SRC
+
** Line Number
Enable linum mode on programming modes
#+END_SRC
+** Emux
+
+[[https://github.com/re5et/emux][emux]] is
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (el-get-bundle re5et/emux)
+
+#+END_SRC
+
+** Smart Parens
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (use-package smartparens
+ :ensure t
+ :config
+ (progn
+ (require 'smartparens-config)
+ (add-hook 'prog-mode-hook 'smartparens-mode)))
+
+#+END_SRC
+
+** Ace-Windows
+
+[[https://github.com/abo-abo/ace-window][ace-window]]
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (use-package ace-window
+ :ensure t
+ :defer t
+ ; :init
+ ; (global-set-key (kbd "M-o") 'ace-window)
+ :config
+ (setq aw-keys '(?a ?s ?d ?f ?j ?k ?l)))
+
+#+END_SRC
+
+** Projectile
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (use-package projectile
+ :ensure t
+ :init
+ (setq projectile-enable-caching t)
+ :config
+ (projectile-global-mode t))
+
+ (use-package persp-projectile
+ :ensure t
+ :config
+ (persp-mode)
+ :bind
+ (:map projectile-mode-map
+ ("s-p" . projectile-persp-switch-project)))
+
+#+END_SRC
* Programming
** Languages
#+END_SRC
+**** Lispy Mode
+
+In Lisp Mode, =M-o= is defined, but I use this for global hydra window. So here disable this key
+bindings in =lispy-mode-map= after loaded. see [[http://stackoverflow.com/questions/298048/how-to-handle-conflicting-keybindings][here]]
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+
+ (use-package lispy
+ :ensure t
+ :init
+ (eval-after-load 'lispy
+ '(progn
+ (define-key lispy-mode-map (kbd "M-o") nil)))
+ :config
+ (add-hook 'emacs-lisp-mode-hook (lambda () (lispy-mode 1))))
+
+#+END_SRC
+
*** Perl
[[https://www.emacswiki.org/emacs/CPerlMode][CPerl mode]] has more features than =PerlMode= for perl programming. Alias this to =CPerlMode=
#+END_SRC
+** Completion
-* Others
+company mode
-** Shell pop mode
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
-** Smartparens mode
+ (use-package company
+ :ensure t
+ :diminish company-mode
+ :config
+ (global-company-mode))
+
+#+END_SRC
-***