|
|
|
@ -1,16 +1,212 @@ |
|
|
|
(eval-and-compile |
|
|
|
(progn |
|
|
|
;; Startup optimizations |
|
|
|
(load "~/.emacs.d/startup.el") |
|
|
|
;; -- Startup optimizations -- |
|
|
|
;; The below will increase the GC limits and remove the file name regex checker |
|
|
|
;; for 5 seconds. This helps reduce the number of GC calls and the total time spent |
|
|
|
;; per file loaded |
|
|
|
|
|
|
|
;; Configure core required setup |
|
|
|
(load "~/.emacs.d/core.el") |
|
|
|
;; Set garbage collection threshold |
|
|
|
;; https://www.reddit.com/r/emacs/comments/3kqt6e/2_easy_little_known_steps_to_speed_up_emacs_start/ |
|
|
|
(setq gc-cons-threshold-original gc-cons-threshold |
|
|
|
gc-cons-percentage-original gc-cons-percentage) |
|
|
|
(setq gc-cons-threshold (* 1024 1024 100) |
|
|
|
gc-cons-percentage 0.6) |
|
|
|
|
|
|
|
;; Configure theme |
|
|
|
(load "~/.emacs.d/theme.el") |
|
|
|
;; Set file-name-handler-alist |
|
|
|
;; https://www.reddit.com/r/emacs/comments/3kqt6e/2_easy_little_known_steps_to_speed_up_emacs_start/ |
|
|
|
(setq file-name-handler-alist-original file-name-handler-alist) |
|
|
|
(setq file-name-handler-alist nil) |
|
|
|
|
|
|
|
;; Configure global packages |
|
|
|
(load "~/.emacs.d/packages.el") |
|
|
|
;; Set deferred timer to reset them |
|
|
|
;; https://emacs.stackexchange.com/a/34367 |
|
|
|
(run-with-idle-timer |
|
|
|
5 nil |
|
|
|
(lambda () |
|
|
|
(setq gc-cons-threshold gc-cons-threshold-original) |
|
|
|
(setq gc-cons-percentage gc-cons-percentage-original) |
|
|
|
(setq file-name-handler-alist file-name-handler-alist-original) |
|
|
|
(makunbound 'gc-cons-threshold-original) |
|
|
|
(makunbound 'gc-cons-percentage-original) |
|
|
|
(makunbound 'file-name-handler-alist-original) |
|
|
|
(message "gc-cons-threshold and file-name-handler-alist restored"))) |
|
|
|
|
|
|
|
;; Load all layers |
|
|
|
(mapc 'load (file-expand-wildcards "~/.emacs.d/layers/*/*.el")))) |
|
|
|
|
|
|
|
;; -- Core setup -- |
|
|
|
(progn |
|
|
|
;; Configure customization |
|
|
|
(setq custom-file "~/.emacs.d/custom.el") |
|
|
|
(load custom-file) |
|
|
|
|
|
|
|
;; Hide startup message |
|
|
|
(setq inhibit-startup-message t) |
|
|
|
|
|
|
|
;; Configure package |
|
|
|
(require 'package) |
|
|
|
|
|
|
|
(add-to-list 'package-archives |
|
|
|
'("melpa-stable" . "https://stable.melpa.org/packages/") t) |
|
|
|
|
|
|
|
(package-initialize) |
|
|
|
|
|
|
|
(when (not package-archive-contents) |
|
|
|
(package-refresh-contents)) |
|
|
|
|
|
|
|
(unless (package-installed-p 'use-package) |
|
|
|
(package-refresh-contents) |
|
|
|
(package-install 'use-package)) |
|
|
|
|
|
|
|
;; Configure use-package |
|
|
|
;; https://github.com/jwiegley/use-package |
|
|
|
(eval-when-compile |
|
|
|
(require 'use-package)) |
|
|
|
(setq use-package-always-ensure t) |
|
|
|
|
|
|
|
;; Disable backup files and auto-saving |
|
|
|
(setq backup-inhibited t) |
|
|
|
(setq auto-save-default nil) |
|
|
|
|
|
|
|
;; revert buffers automatically when underlying files are changed externally |
|
|
|
(global-auto-revert-mode t) |
|
|
|
|
|
|
|
;; Subword mode |
|
|
|
(global-subword-mode) |
|
|
|
|
|
|
|
;; Save place in file |
|
|
|
(save-place-mode 1) |
|
|
|
|
|
|
|
;; Save history |
|
|
|
(setq savehist-additional-variables '(mark-ring |
|
|
|
global-mark-ring |
|
|
|
search-ring |
|
|
|
regexp-search-ring |
|
|
|
extended-command-history) |
|
|
|
savehist-autosave-interval 60 |
|
|
|
enable-recursive-minibuffers t |
|
|
|
history-length 1000) |
|
|
|
(savehist-mode 1) |
|
|
|
|
|
|
|
;; smart tab behavior - indent or complete |
|
|
|
(setq tab-always-indent 'complete)) |
|
|
|
|
|
|
|
|
|
|
|
;; -- Custom functions -- |
|
|
|
(progn |
|
|
|
(defun enable-flycheck (hook) |
|
|
|
(add-hook hook |
|
|
|
;; Flycheck |
|
|
|
;; http://www.flycheck.org/en/latest/index.html |
|
|
|
`(lambda () |
|
|
|
(use-package flycheck |
|
|
|
:diminish flycheck-mode |
|
|
|
:config |
|
|
|
(flycheck-mode)))))) |
|
|
|
|
|
|
|
|
|
|
|
;; -- Theme/Style setup -- |
|
|
|
(progn |
|
|
|
(use-package monokai-theme |
|
|
|
:config |
|
|
|
(load-theme 'monokai t)) |
|
|
|
|
|
|
|
;; Enable global line numbers |
|
|
|
(global-linum-mode t) |
|
|
|
|
|
|
|
;; Hide menu bar |
|
|
|
(menu-bar-mode -1) |
|
|
|
|
|
|
|
;; Highlight current line |
|
|
|
(global-hl-line-mode t) |
|
|
|
|
|
|
|
;; Enable center cursor |
|
|
|
(use-package centered-cursor-mode |
|
|
|
:load-path "vendor/" |
|
|
|
:config |
|
|
|
(global-centered-cursor-mode)) |
|
|
|
|
|
|
|
;; Enable doom-modeline |
|
|
|
;; https://seagle0128.github.io/doom-modeline/ |
|
|
|
(use-package doom-modeline |
|
|
|
:ensure t |
|
|
|
:defer t |
|
|
|
:hook (after-init . doom-modeline-init))) |
|
|
|
|
|
|
|
|
|
|
|
;; -- Global packages -- |
|
|
|
(progn |
|
|
|
;; Configure osx-clipboard |
|
|
|
;; https://github.com/joddie/osx-clipboard-mode |
|
|
|
(use-package osx-clipboard |
|
|
|
:diminish osx-clipboard-mode |
|
|
|
:config |
|
|
|
(osx-clipboard-mode t)) |
|
|
|
|
|
|
|
;; Configure helm |
|
|
|
;; https://emacs-helm.github.io/helm/ |
|
|
|
(use-package helm-config |
|
|
|
:ensure helm |
|
|
|
:diminish helm-mode |
|
|
|
:bind (("M-x" . helm-M-x) |
|
|
|
("C-x b" . helm-mini) |
|
|
|
("C-x C-f" . helm-find-files)) |
|
|
|
:init |
|
|
|
(setq helm-move-to-line-cycle-in-source t |
|
|
|
helm-M-x-always-save-history t) |
|
|
|
:config |
|
|
|
(use-package helm-ag) |
|
|
|
(helm-mode 1)) |
|
|
|
|
|
|
|
;; Configure projectile |
|
|
|
;; https://www.projectile.mx/en/latest/ |
|
|
|
(use-package projectile |
|
|
|
:delight '(:eval (concat " " (projectile-project-name))) |
|
|
|
:config |
|
|
|
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map) |
|
|
|
(projectile-global-mode +1) |
|
|
|
;; Use helm-projectile |
|
|
|
:config |
|
|
|
(setq projectile-completion-system 'helm |
|
|
|
projectile-switch-project-action 'helm-projectile) |
|
|
|
(helm-projectile-on)) |
|
|
|
|
|
|
|
;; Configure helm-projectile |
|
|
|
;; https://github.com/bbatsov/helm-projectile |
|
|
|
(use-package helm-projectile) |
|
|
|
|
|
|
|
|
|
|
|
;; Configure company-mode |
|
|
|
;; http://company-mode.github.io/ |
|
|
|
(use-package company |
|
|
|
:diminish company-mode |
|
|
|
:init |
|
|
|
(setq company-idle-delay 0.2 |
|
|
|
company-minimum-prefix-length 2 |
|
|
|
company-require-match nil |
|
|
|
company-dabbrev-ignore-case nil |
|
|
|
company-dabbrev-downcase nil) |
|
|
|
:config |
|
|
|
(global-company-mode)) |
|
|
|
|
|
|
|
|
|
|
|
;; Configure ws-butler |
|
|
|
;; https://github.com/lewang/ws-butler |
|
|
|
(use-package ws-butler |
|
|
|
:init |
|
|
|
(setq ws-butler-keep-whitespace-before-point nil |
|
|
|
require-final-newline t) |
|
|
|
:config |
|
|
|
(ws-butler-global-mode +1)) |
|
|
|
|
|
|
|
|
|
|
|
;; Configure diminish |
|
|
|
;; https://github.com/myrjola/diminish.el |
|
|
|
(use-package diminish) |
|
|
|
|
|
|
|
|
|
|
|
;; Smartparens |
|
|
|
;; https://github.com/Fuco1/smartparens |
|
|
|
(use-package smartparens |
|
|
|
:diminish |
|
|
|
:config |
|
|
|
(smartparens-global-mode))) |
|
|
|
|
|
|
|
|
|
|
|
;; -- Load layers -- |
|
|
|
(mapc 'load (file-expand-wildcards "~/.emacs.d/layers/*/*.el")) |