Skip to content

Instantly share code, notes, and snippets.

@asgartech
Last active July 24, 2019 17:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save asgartech/dfad53b56db3333e3dad12a191497220 to your computer and use it in GitHub Desktop.
Save asgartech/dfad53b56db3333e3dad12a191497220 to your computer and use it in GitHub Desktop.
My .emacs file. Makes heavy use of use-package. Lots of auto-completion using company and ido. Org and Markdown. Emmet mode for working with HTML and CSS. Magit and Projectile for projects.
;; Bootstraping "use-package"
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/"))
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives '("org" . "https://orgmode.org/elpa/"))
(package-initialize)
(unless (package-installed-p 'use-package)
(package-refresh-contents)
(package-install 'use-package))
(eval-when-compile
(require 'use-package))
(setq use-package-always-ensure t)
(setq use-package-verbose t)
;; install auto-compile
(use-package auto-compile
:config
(auto-compile-on-load-mode)
(setq load-prefer-newer t))
;; install better defaults
(use-package better-defaults
:ensure t)
;; install parchment theme
(use-package parchment-theme
:ensure t)
;; install company mode for auto-completion
(use-package company
:ensure company-dict
:ensure company-web
:init
(setq company-idle-delay 0.1)
(setq company-minimum-prefix-length 2))
;; install ido-ubiquitous-mode
(use-package ido-completing-read+
:ensure t
:config
(ido-mode 1)
(ido-everywhere 1)
(ido-ubiquitous-mode 1))
;; install ido-yes-or-no mode
(use-package ido-yes-or-no
:ensure t
:config
(ido-yes-or-no-mode 1))
;; install ido-vertical-mode
(use-package ido-vertical-mode
:ensure t
:ensure ido-yes-or-no
:config
(ido-vertical-mode 1)
(setq ido-vertical-define-keys 'C-n-and-C-p-only))
;; install flx-ido for flex searching
(use-package flx-ido
:ensure t
:config
(flx-ido-mode 1)
(setq ido-enable-flex-matching t)
(setq ido-use-faces nil))
;; install magit
(use-package magit
:ensure t
:config
(global-set-key (kbd "C-x g") 'magit-status))
;; install smex
(use-package smex
:ensure t
:init
(smex-initialize)
:config
(global-set-key (kbd "M-x") 'smex)
(global-set-key (kbd "M-X") 'smex-major-mode-commands)
;; This is your old M-x.
(global-set-key (kbd "C-c C-c M-x") 'execute-extended-command))
;; install projectile
(use-package projectile
:ensure t
:init
(setq projectile-project-search-path '("~/Git/sr.ht/"))
:config
(define-key projectile-mode-map (kbd "s-p") 'projectile-command-map)
(define-key projectile-mode-map (kbd "C-c p") 'projectile-command-map)
(projectile-mode 1))
;; install windmove
(use-package windmove
:ensure t
:bind (("<f2> <right>" . windmove-right)
("<f2> <left>" . windmove-left)
("<f2> <up>" . windmove-up)
("<f2> <down>" . windmove-down)))
;; install emmet mode
(use-package emmet-mode
:ensure t
:init
(add-hook 'sgml-mode-hook 'emmet-mode)
(add-hook 'html-mode-hook 'emmet-mode)
(add-hook 'css-mode-hook 'emmet-mode)
(add-hook 'emmet-mode-hook 'flyspell-mode)
(add-hook 'emmet-mode-hook 'visual-line-mode))
;; install markdown
(use-package markdown-mode
:ensure t
:init
(add-hook 'markdown-mode-hook 'flyspell-mode)
(add-hook 'markdown-mode-hook 'visual-line-mode)
(setq markdown-command "pandoc"))
;; install org mode
(use-package org
:ensure org-plus-contrib
:pin org
:init
(add-hook 'org-mode-hook 'org-indent-mode)
(add-hook 'org-mode-hook 'flyspell-mode)
(add-hook 'org-mode-hook 'visual-line-mode)
(setq org-startup-truncated nil)
(setq org-return-follows-link t)
(setq org-src-fontify-natively t)
(setq org-startup-indented t)
(setq org-completion-use-ido t)
:bind (("\C-c a" . org-agenda)
("\C-c c" . org-capture)))
;; install org bullets
(use-package org-bullets
:ensure t
:init
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))
(font-lock-add-keywords 'org-mode
'(("^ +\\([-*]\\) "
(0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "")))))))
(use-package org-autolist
:ensure t
:init
(add-hook 'org-mode-hook (lambda () (org-autolist-mode 1))))
(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.
'(add-to-list (quote auto-mode-alist) t)
'(column-number-mode 1)
'(custom-safe-themes (quote (default "parchment")))
'(defalias (quote yes-or-no-p) t)
'(delete-selection-mode 1)
'(electric-pair-mode 1)
'(global-auto-revert-mode 1)
'(global-hl-line-mode 1)
'(global-subword-mode 1)
'(menu-bar-mode 1)
'(package-selected-packages
(quote
(auto-compile ido-yes-or-no ido-completing-read+ ido-vertical-mode ido-vertical magit emmet-mode company-abbrev company-dabbrev company-ispell org-plus-contrib parchment-theme company better-defaults use-package diminish)))
'(prefer-coding-system (quote utf-8))
'(recentf-mode 1)
'(require (quote recentf))
'(save-place-mode 1)
'(set-default-coding-systems (quote utf-8))
'(set-language-environment "UTF-8")
'(setq gc-cons-threshold t)
'(show-paren-mode 1)
'(user-full-name "Matthew Graybosch")
'(user-mail-address "mgraybosch@fastmail.com"))
(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.
'(default ((t (:inherit nil :stipple nil :background "#ffffea" :foreground "#000000" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 120 :width normal :foundry "IBM " :family "IBM Plex Mono"))))
'(variable-pitch ((t (:family "IBM Plex Sans Regular")))))
;; This didn't work inside custom-set-variables
(progn
(put 'narrow-to-region 'disabled nil)
(put 'narrow-to-page 'disabled nil)
(put 'upcase-region 'disabled nil)
(put 'downcase-region 'disabled nil)
(put 'erase-buffer 'disabled nil)
(put 'scroll-left 'disabled nil)
(put 'dired-find-alternate-file 'disabled nil))
;; Let's pin some file types to modes.
(add-to-list 'auto-mode-alist '("\\.shtml\\'" . html-mode))
(add-to-list 'auto-mode-alist '("README\\.md\\'" . gfm-mode))
(add-to-list 'auto-mode-alist '("\\.md\\'" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.markdown\\'" . markdown-mode))
;; And some default hooks
(add-hook 'text-mode-hook 'flyspell-mode)
(add-hook 'text-mode-hook 'visual-line-mode)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment