diff --git a/elisp/init-dashboard.el b/elisp/init-dashboard.el
new file mode 100644
index 0000000..b986623
--- /dev/null
+++ b/elisp/init-dashboard.el
@@ -0,0 +1,93 @@
+;;; init-dashboard.el --- -*- lexical-binding: t -*-
+;;
+;; Filename: init-dashboard.el
+;; Description: Initialize Dashboard
+;; Author: Mingde (Matthew) Zeng
+;; Copyright (C) 2019 Mingde (Matthew) Zeng
+;; Created: Thu Mar 14 17:21:46 2019 (-0400)
+;; Version: 3.0
+;; URL: https://github.com/MatthewZMD/.emacs.d
+;; Keywords: M-EMACS .emacs.d dashboard
+;; Compatibility: emacs-version >= 26.1
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; This initializes dashboard
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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 GNU Emacs. If not, see .
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+;; DashboardPac
+(use-package dashboard
+ :demand
+ :diminish (dashboard-mode page-break-lines-mode)
+ :bind
+ (("C-z d" . open-dashboard)
+ :map dashboard-mode-map
+ (("n" . dashboard-next-line)
+ ("p" . dashboard-previous-line)
+ ("N" . dashboard-next-section)
+ ("F" . dashboard-previous-section)))
+ :custom
+ (dashboard-banner-logo-title "Close the world. Open the nExt.")
+ (dashboard-startup-banner (expand-file-name "images/KEC_Dark_BK_Small.png" user-emacs-directory))
+ (dashboard-items '((recents . 7)
+ (bookmarks . 7)
+ (agenda . 5)))
+ (initial-buffer-choice (lambda () (get-buffer dashboard-buffer-name)))
+ (dashboard-set-heading-icons t)
+ (dashboard-set-navigator t)
+ (dashboard-navigator-buttons
+ (if (featurep 'all-the-icons)
+ `(((,(all-the-icons-octicon "mark-github" :height 1.1 :v-adjust -0.05)
+ "M-EMACS" "Browse M-EMACS Homepage"
+ (lambda (&rest _) (browse-url "https://github.com/MatthewZMD/.emacs.d")))
+ (,(all-the-icons-fileicon "elisp" :height 1.0 :v-adjust -0.1)
+ "Configuration" "" (lambda (&rest _) (edit-configs)))
+ (,(all-the-icons-faicon "cogs" :height 1.0 :v-adjust -0.1)
+ "Update" "" (lambda (&rest _) (auto-package-update-now)))))
+ `((("" "M-EMACS" "Browse M-EMACS Homepage"
+ (lambda (&rest _) (browse-url "https://github.com/MatthewZMD/.emacs.d")))
+ ("" "Configuration" "" (lambda (&rest _) (edit-configs)))
+ ("" "Update" "" (lambda (&rest _) (auto-package-update-now)))))))
+ :custom-face
+ (dashboard-banner-logo-title ((t (:family "Love LetterTW" :height 123))))
+ :config
+ (dashboard-setup-startup-hook)
+ ;; Open Dashboard function
+ (defun open-dashboard ()
+ "Open the *dashboard* buffer and jump to the first widget."
+ (interactive)
+ (dashboard-insert-startupify-lists)
+ (switch-to-buffer dashboard-buffer-name)
+ (goto-char (point-min))
+ (delete-other-windows)))
+;; -DashboardPac
+
+;; PBLPac
+(use-package page-break-lines
+ :diminish
+ :init (global-page-break-lines-mode))
+;; -PBLPac
+
+(provide 'init-dashboard)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; init-dashboard.el ends here
diff --git a/elisp/init-org.el b/elisp/init-org.el
index 1fe1d0f..5521136 100644
--- a/elisp/init-org.el
+++ b/elisp/init-org.el
@@ -37,8 +37,8 @@
;; OrgPac
(use-package org
- :ensure nil
- :defer t
+ :ensure t
+ ;; :defer t
:bind (("C-c l" . org-store-link)
("C-c a" . org-agenda)
("C-c c" . org-capture)
diff --git a/elisp/init-parens.el b/elisp/init-parens.el
new file mode 100644
index 0000000..26073d4
--- /dev/null
+++ b/elisp/init-parens.el
@@ -0,0 +1,109 @@
+;;; init-parens.el --- -*- lexical-binding: t -*-
+;;
+;; Filename: init-parens.el
+;; Description: Initialize Parenthesis
+;; Author: Mingde (Matthew) Zeng
+;; Copyright (C) 2019 Mingde (Matthew) Zeng
+;; Created: Fri Mar 15 10:17:13 2019 (-0400)
+;; Version: 3.0
+;; URL: https://github.com/MatthewZMD/.emacs.d
+;; Keywords: M-EMACS .emacs.d parenthesis smartparens delete-block
+;; Compatibility: emacs-version >= 26.1
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; This initializes parenthesis smartparens delete-block
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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 GNU Emacs. If not, see .
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(eval-when-compile
+ (require 'init-global-config))
+
+;; SmartParensPac
+(use-package smartparens
+ :hook (prog-mode . smartparens-mode)
+ :diminish smartparens-mode
+ :bind
+ (:map smartparens-mode-map
+ ("C-M-f" . sp-forward-sexp)
+ ("C-M-b" . sp-backward-sexp)
+ ("C-M-a" . sp-backward-down-sexp)
+ ("C-M-e" . sp-up-sexp)
+ ("C-M-w" . sp-copy-sexp)
+ ("C-M-k" . sp-change-enclosing)
+ ("M-k" . sp-kill-sexp)
+ ("C-M-" . sp-splice-sexp-killing-backward)
+ ("C-S-" . sp-splice-sexp-killing-around)
+ ("C-]" . sp-select-next-thing-exchange))
+ :custom
+ (sp-escape-quotes-after-insert nil)
+ :config
+ ;; Stop pairing single quotes in elisp
+ (sp-local-pair 'emacs-lisp-mode "'" nil :actions nil)
+ (sp-local-pair 'org-mode "[" nil :actions nil))
+;; -SmartParensPac
+
+;; MatchParens
+;; Show matching parenthesis
+(show-paren-mode 1)
+;; we will call `blink-matching-open` ourselves...
+(remove-hook 'post-self-insert-hook
+ #'blink-paren-post-self-insert-function)
+
+;; this still needs to be set for `blink-matching-open` to work
+(setq blink-matching-paren 'show)
+(let ((ov nil)) ; keep track of the overlay
+ (advice-add
+ #'show-paren-function
+ :after
+ (defun show-paren--off-screen+ (&rest _args)
+ "Display matching line for off-screen paren."
+ (when (overlayp ov)
+ (delete-overlay ov))
+ ;; check if it's appropriate to show match info,
+ ;; see `blink-paren-post-self-insert-function'
+ (when (and (overlay-buffer show-paren--overlay)
+ (not (or cursor-in-echo-area
+ executing-kbd-macro
+ noninteractive
+ (minibufferp)
+ this-command))
+ (and (not (bobp))
+ (memq (char-syntax (char-before)) '(?\) ?\$)))
+ (= 1 (logand 1 (- (point)
+ (save-excursion
+ (forward-char -1)
+ (skip-syntax-backward "/\\")
+ (point))))))
+ ;; rebind `minibuffer-message' called by
+ ;; `blink-matching-open' to handle the overlay display
+ (cl-letf (((symbol-function #'minibuffer-message)
+ (lambda (msg &rest args)
+ (let ((msg (apply #'format-message msg args)))
+ (setq ov (display-line-overlay+
+ (window-start) msg))))))
+ (blink-matching-open))))))
+;; -MatchParens
+
+(provide 'init-parens)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; init-parens.el ends here
diff --git a/elisp/init-popup-kill-ring.el b/elisp/init-popup-kill-ring.el
new file mode 100644
index 0000000..329f93e
--- /dev/null
+++ b/elisp/init-popup-kill-ring.el
@@ -0,0 +1,46 @@
+;;; init-popup-kill-ring.el --- -*- lexical-binding: t -*-
+;;
+;; Filename: init-popup-kill-ring.el
+;; Description: Initialize Popup-Kill-Ring
+;; Author: Mingde (Matthew) Zeng
+;; Copyright (C) 2019 Mingde (Matthew) Zeng
+;; Created: Thu Mar 14 15:15:40 2019 (-0400)
+;; Version: 3.0
+;; URL: https://github.com/MatthewZMD/.emacs.d
+;; Keywords: M-EMACS .emacs.d popup-kill-ring
+;; Compatibility: emacs-version >= 26.1
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; This initializes popup-kill-ring
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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 GNU Emacs. If not, see .
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+;; PopKillRing
+(use-package popup-kill-ring
+ :bind ("M-y" . popup-kill-ring)
+ :custom (kill-do-not-save-duplicates t))
+;; -PopKillRing
+
+(provide 'init-popup-kill-ring)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; init-popup-kill-ring.el ends here
diff --git a/elisp/init-projectile.el b/elisp/init-projectile.el
new file mode 100644
index 0000000..0f0d6f0
--- /dev/null
+++ b/elisp/init-projectile.el
@@ -0,0 +1,57 @@
+;;; init-projectile.el --- -*- lexical-binding: t -*-
+;;
+;; Filename: init-projectile.el
+;; Description: Initialize Projectile
+;; Author: Mingde (Matthew) Zeng
+;; Copyright (C) 2019 Mingde (Matthew) Zeng
+;; Created: Fri Mar 15 09:10:23 2019 (-0400)
+;; Version: 3.0
+;; URL: https://github.com/MatthewZMD/.emacs.d
+;; Keywords: M-EMACS .emacs.d projectile
+;; Compatibility: emacs-version >= 26.1
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Commentary:
+;;
+;; This initializes projectile
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; 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 GNU Emacs. If not, see .
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;;; Code:
+
+(eval-when-compile
+ (require 'init-const))
+
+;; ProjPac
+(use-package projectile
+ :bind
+ ("C-c p" . projectile-command-map)
+ :custom
+ (projectile-completion-system 'ivy)
+ :config
+ (projectile-mode 1)
+ (when (and *sys/win32*
+ (executable-find "tr"))
+ (setq projectile-indexing-method 'alien))
+ (add-to-list 'projectile-globally-ignored-directories "node_modules"))
+;; -ProjPac
+
+(provide 'init-projectile)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; init-projectile.el ends here
diff --git a/init.el b/init.el
index c672f4a..995404c 100644
--- a/init.el
+++ b/init.el
@@ -88,137 +88,65 @@ If you experience freezing, decrease this. If you experience stuttering, increa
(update-to-load-path (expand-file-name "elisp" user-emacs-directory))
;; -LoadPath
-;; ;; Constants
-
+;; Constants
(require 'init-const)
-;; ;; Packages
-
;; ;; Package Management
(require 'init-package)
;; ;; Global Functionalities
(require 'init-global-config)
-
(require 'init-func)
-
(require 'init-search)
-
(require 'init-crux)
-
(require 'init-avy)
-
-;; (require 'init-winner)
-
(require 'init-which-key)
-
-;; (require 'init-popup-kill-ring)
-
-;; (require 'init-undo-tree)
-
+(require 'init-popup-kill-ring)
(require 'init-discover-my-major)
-
(require 'init-ace-window)
-
(require 'init-shell)
-
(require 'init-dired)
-
(require 'init-buffer)
;; ;; UI Enhancements
(require 'init-ui-config)
-
(require 'init-theme)
-
-;; (require 'init-dashboard)
-
-;; (require 'init-fonts)
-
-;; (require 'init-scroll)
+(require 'init-dashboard)
;; ;; General Programming
(require 'init-magit)
-
-;; (require 'init-projectile)
-
+(require 'init-projectile)
(require 'init-yasnippet)
-
(require 'init-syntax)
+(require 'init-parens)
-;; (require 'init-dumb-jump)
+;;; (require 'init-indent)
-;; (require 'init-parens)
+;;; (require 'init-quickrun)
-;; (require 'init-indent)
+;;; (require 'init-format)
-;; (require 'init-quickrun)
+;;; (require 'init-lsp)
-;; (require 'init-format)
-
-;; (require 'init-comment)
-
-;; (require 'init-edit)
-
-;; (require 'init-header)
-
-;; (require 'init-ein)
-
-;; (require 'init-lsp)
-
-;; (require 'init-company)
+;;; (require 'init-company)
;; ;; Programming
-;; (require 'init-java)
-;; (require 'init-cc)
+;;; (require 'init-cc)
-;; (require 'init-python)
+;;; (require 'init-python)
-;; (require 'init-haskell)
+;;; (require 'init-latex)
-;; (require 'init-ess)
+;;; (require 'init-buildsystem)
-;; (require 'init-latex)
+;; Web Development
+;;; (require 'init-webdev)
-;; (require 'init-buildsystem)
-
-;; ;; Web Development
-;; (require 'init-webdev)
-
-;; ;; Office
+;; Office
(require 'init-org)
-
-;; (require 'init-pdf)
-
(require 'init-adoc)
-;; ;; Internet
-;; ;; (require 'init-eaf)
-
-;; (require 'init-erc)
-
-;; ;; (require 'init-mu4e)
-
-;; (require 'init-tramp)
-
-;; (require 'init-leetcode)
-
-;; (require 'init-debbugs)
-
-;; (require 'init-hackernews)
-
-;; (require 'init-eww)
-
-;; ;; Miscellaneous
-;; (require 'init-chinese)
-
-;; (require 'init-games)
-
-;; (require 'init-epaint)
-
-;; (require 'init-zone)
-
;; InitPrivate
;; Load init-private.el if it exists
(when (file-exists-p (expand-file-name "init-private.el" user-emacs-directory))