+ ;; only show today's tasks in agenda view
+ (setq org-agenda-span 'day)
+ ;; Use current windows for agenda view
+ (setq org-agenda-window-setup 'current-window)
+
+ ;; show all feature entries for repeating tasks,
+ ;; this is already setting by default
+ (setq org-agenda-repeating-timestamp-show-all t)
+
+ ;; Show all agenda dates - even if they are empty
+ (setq org-agenda-show-all-dates t)
+#+END_SRC
+
+** Export PDF
+Install MacTex-basic [[http://www.tug.org/mactex/morepackages.html][MacTex-basic]] and some tex packages
+#+BEGIN_SRC sh
+ wget http://tug.org/cgi-bin/mactex-download/BasicTeX.pkg
+
+ sudo tlmgr update --self
+
+ sudo tlmgr install titlesec framed threeparttable wrapfig multirow enumitem bbding titling tabu mdframed tcolorbox textpos import varwidth needspace tocloft ntheorem environ trimspaces collection-fontsrecommended capt-of
+#+END_SRC
+
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ ;; ;; allow for export=>beamer by placing
+
+ ;; http://emacs-fu.blogspot.com/2011/04/nice-looking-pdfs-with-org-mode-and.html
+ ;; #+LaTeX_CLASS: beamer in org files
+ (unless (boundp 'org-export-latex-classes)
+ (setq org-export-latex-classes nil))
+ (add-to-list 'org-export-latex-classes
+ ;; beamer class, for presentations
+ '("beamer"
+ "\\documentclass[11pt]{beamer}\n
+ \\mode<{{{beamermode}}}>\n
+ \\usetheme{{{{beamertheme}}}}\n
+ \\usecolortheme{{{{beamercolortheme}}}}\n
+ \\beamertemplateballitem\n
+ \\setbeameroption{show notes}
+ \\usepackage[utf8]{inputenc}\n
+ \\usepackage[T1]{fontenc}\n
+ \\usepackage{hyperref}\n
+ \\usepackage{color}
+ \\usepackage{listings}
+ \\lstset{numbers=none,language=[ISO]C++,tabsize=4,
+ frame=single,
+ basicstyle=\\small,
+ showspaces=false,showstringspaces=false,
+ showtabs=false,
+ keywordstyle=\\color{blue}\\bfseries,
+ commentstyle=\\color{red},
+ }\n
+ \\usepackage{verbatim}\n
+ \\institute{{{{beamerinstitute}}}}\n
+ \\subject{{{{beamersubject}}}}\n"
+
+ ("\\section{%s}" . "\\section*{%s}")
+
+ ("\\begin{frame}[fragile]\\frametitle{%s}"
+ "\\end{frame}"
+ "\\begin{frame}[fragile]\\frametitle{%s}"
+ "\\end{frame}")))
+
+ ;; letter class, for formal letters
+
+ (add-to-list 'org-export-latex-classes
+
+ '("letter"
+ "\\documentclass[11pt]{letter}\n
+ \\usepackage[utf8]{inputenc}\n
+ \\usepackage[T1]{fontenc}\n
+ \\usepackage{color}"
+
+ ("\\section{%s}" . "\\section*{%s}")
+ ("\\subsection{%s}" . "\\subsection*{%s}")
+ ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
+ ("\\paragraph{%s}" . "\\paragraph*{%s}")
+ ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
+
+
+ (require 'ox-md)
+ (require 'ox-beamer)
+
+ (setq org-latex-pdf-process
+ '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
+ "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
+ "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"))
+
+ (setq TeX-parse-self t)
+
+ (setq TeX-PDF-mode t)
+ (add-hook 'LaTeX-mode-hook
+ (lambda ()
+ (LaTeX-math-mode)
+ (setq TeX-master t)))
+
+#+END_SRC
+
+** Org structure template
+extend org-mode's easy templates, refer to [[http://coldnew.github.io/coldnew-emacs/#orgheadline94][Extend org-modes' esay templates]]
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (add-to-list 'org-structure-template-alist
+ '("E" "#+BEGIN_SRC emacs-lisp :tangle yes :results silent\n?\n#+END_SRC"))
+ (add-to-list 'org-structure-template-alist
+ '("S" "#+BEGIN_SRC sh :results output replace\n?\n#+END_SRC"))
+ (add-to-list 'org-structure-template-alist
+ '("p" "#+BEGIN_SRC plantuml :file uml.png \n?\n#+END_SRC"))
+ (add-to-list 'org-structure-template-alist
+ '("P" "#+BEGIN_SRC perl \n?\n#+END_SRC"))
+ (add-to-list 'org-structure-template-alist
+ '("f" "#+BEGIN_SRC fundamental :tangle ?\n\n#+END_SRC"))
+#+END_SRC
+
+* Magit
+[[https://github.com/magit/magit][Magit]] is a very cool git interface on Emacs.
+and Defined keys, using vi keybindings, Refer abo-abo's setting [[https://github.com/abo-abo/oremacs/blob/c5cafdcebc88afe9e73cc8bd40c49b70675509c7/modes/ora-nextmagit.el][here]]
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (use-package magit
+ :ensure t
+ :init
+ ;; don't ask me to confirm the unsaved change
+ (setq magit-save-repository-buffers nil)
+ ;; default is 50
+ (setq git-commit-summary-max-length 80)
+ :commands magit-status magit-blame
+ :config
+ (dolist (map (list magit-status-mode-map
+ magit-log-mode-map
+ magit-diff-mode-map
+ magit-staged-section-map))
+ (define-key map "j" 'magit-section-forward)
+ (define-key map "k" 'magit-section-backward)
+ (define-key map "D" 'magit-discard)
+ (define-key map "O" 'magit-discard-file)
+ (define-key map "n" nil)
+ (define-key map "p" nil)
+ (define-key map "v" 'recenter-top-bottom)
+ (define-key map "i" 'magit-section-toggle)))
+#+END_SRC
+
+* Eshell
+** Eshell alias
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (defalias 'e 'find-file)
+ (defalias 'ff 'find-file)
+ (defalias 'ee 'find-files)
+#+END_SRC
+
+** eshell temp directory
+set default eshell history folder
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (setq eshell-directory-name (concat sd-temp-directory "eshell"))
+#+END_SRC
+
+** Eshell erase buffer
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (defun sd/eshell-clear-buffer ()
+ "Clear eshell buffer"
+ (interactive)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (eshell-send-input)))
+
+ (add-hook 'eshell-mode-hook (lambda ()
+ (local-set-key (kbd "C-l") 'sd/eshell-clear-buffer)))
+#+END_SRC
+
+** Toggle Eshell
+Toggle an eshell in split window below, refer [[http://www.howardism.org/Technical/Emacs/eshell-fun.html][eshell-here]]
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (defun sd/window-has-eshell ()
+ "Check if current windows list has a eshell buffer, and return the window"
+ (interactive)
+ (let ((ret nil))
+ (walk-windows (lambda (window)
+ (if (equal (with-current-buffer (window-buffer window) major-mode)
+ 'eshell-mode)
+ (setq ret window)))
+ nil nil)
+ ret))
+
+ (defun sd/toggle-project-eshell ()
+ "Toggle a eshell buffer vertically"
+ (interactive)
+ (if (sd/window-has-eshell)
+ (if (equal major-mode 'eshell-mode)
+ (progn
+ (if (equal (length (window-list)) 1)
+ (mode-line-other-buffer)
+ (delete-window)))
+ (select-window (sd/window-has-eshell)))
+ (progn
+ (split-window-vertically (- (/ (window-total-height) 3)))
+ (other-window 1)
+ (if (projectile-project-p)
+ (projectile-run-eshell)
+ (eshell))
+ ;; (let ((dir default-directory))
+
+ ;; (split-window-vertically (- (/ (window-total-height) 3)))
+ ;; (other-window 1)
+ ;; (unless (and (boundp 'eshell-buffer-name) (get-buffer eshell-buffer-name))
+ ;; (eshell))
+ ;; (switch-to-buffer eshell-buffer-name)
+ ;; (goto-char (point-max))
+ ;; (eshell-kill-input)
+ ;; (insert (format "cd %s" dir))
+ ;; (eshell-send-input))
+ )))
+
+ ;; (global-unset-key (kbd "M-`"))
+ (global-set-key (kbd "s-e") 'sd/toggle-project-eshell)
+#+END_SRC
+
+** exec-path-from-shell
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (use-package exec-path-from-shell
+ :ensure t
+ :init
+ (setq exec-path-from-shell-check-startup-files nil)
+ :config
+ (exec-path-from-shell-initialize))
+#+END_SRC
+
+* Misc Settings
+** [[https://github.com/abo-abo/hydra][Hydra]]
+*** hydra install
+#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (use-package hydra