Skip to content

Latest commit

 

History

History
executable file
·
722 lines (543 loc) · 17.2 KB

File metadata and controls

executable file
·
722 lines (543 loc) · 17.2 KB

Zach’s Emacs Config

Packages

Setup

(setq package-enable-at-startup nil)
(require 'package)


(add-to-list 'package-archives
       '("melpa" . "http://melpa.org/packages/"))

(package-initialize)

(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))

(unless (package-installed-p 'diminish)
  (package-refresh-contents)
  (package-install 'diminish))

(setq use-package-compute-statistics 1)

Completion

(setq ido-create-new-buffer 'always)
(setq ido-enable-flex-matching t)
(setq ido-everywhere t)
(ido-mode 1)
(ido-everywhere 1)

(use-package ido-completing-read+
  :ensure t
  :config
  (ido-ubiquitous-mode 1)
  (setq-default ido-auto-merge-work-directories-length -1))

(use-package smex
  :ensure t
  :bind
  ("M-x" . smex)
  ("M-X" . smex-major-mode-commands)
  :config
  (smex-initialize))

Swiper

;; SWIPER - SEARCH REPLACEMENT

(use-package swiper
  :ensure t
  :bind ("C-c s" . swiper)
  :config
  (progn
    (setq ivy-use-virtual-buffers t)
    (setq enable-recursive-minibuffers t)))

Text-Completion

;; Auto-Complete Engine

  (use-package company
    :ensure t
    :defer 3
    :diminish (company-mode . "")
    :init
    (setq company-idle-delay 0.3)
    (setq company-begin-commands '(self-insert-command))
    (setq company-minimum-prefix-length 1)
    (setq company-tooltip-align-annotations t)
    (setq company-tooltip-limit 20)
    (setq company-dabbrev-downcase nil)
    :config
    (global-company-mode))

  ;; (use-package company-auctex
  ;;   :ensure t
  ;;   :after (company tex)
  ;;   :config
  ;;   (company-auctex-init))

Yasnippet

(use-package yasnippet
  :ensure t
  :defer 2
  :diminish (yas-minor-mode . "")
  :config (yas-global-mode 1))

(use-package yasnippet-snippets
  :ensure t
  :defer t)

Web-mode

(use-package web-mode
  :ensure t
  :defer t
  :mode (("\\.html\\'" . web-mode)
         ("\\.html\\.erb\\'" . web-mode)
         ("\\.css\\'" . web-mode)
         ("\\.jinja\\'" . web-mode)
         ("\\.php\\'" . web-mode)))

Org

(use-package org
  :ensure t
  :defer 2
  :config

  ;;Add notes when task done
  (setq org-log-done 'note)
  (setq org-log-done 'time)

  ;;New Drawer Name
  ;;(add-to-list 'org-drawers "LATEX")

  ;;Follow links with RET
  (setq org-return-follows-link t)

  ;;(setq org-cycle-include-plain-lists 'integrate)

  ;;(setq org-hide-emphasis-markers t)
  ;;(setq org-startup-with-inline-images t)
  ;;(setq org-startup-with-latex-preview t)
  (add-hook 'org-mode-hook (lambda () (electric-indent-local-mode -1)))



  ;;Notes and Capture
  (setq org-default-notes-file (concat org-directory "~/sync/_.org"))
  (define-key global-map "\C-c c" 'org-capture)

  ;;Agenda Files
  (global-set-key (kbd "C-c a") 'org-agenda)

  (setq org-capture-templates
	  '(("u" "uni-todo" entry (file+olp "~/sync/_.org" "other" "uni-todo")
	   "*** TODO %?\n DEADLINE: %^t")
	   ("e" "events" entry (file+olp "~/sync/_.org" "other" "events")
	   "*** %?\n SCHEDULED: %^t")	   
	   ("o" "other-todo" entry (file+olp "~/sync/_.org" "other" "other-todo")
	   "*** TODO %?\n DEADLINE: %^t")
	   ))
  )

Magit

;;Git Control

(use-package magit
  :ensure t
  :bind (("C-c g" . magit-status)
	   ("C-c l" . magit-log)))

Auctex

;; Emacs Tex Integratiokn

;; no longer use latex, switched to groff
;; (use-package tex
;;    :defer t
;;    :ensure auctex
;;    :config
;;    (setq TeX-auto-save t)
;;    (setq TeX-parse-self t)
;;    (setq-default TeX-master nil)
;; ;; (setq-default TeX-electric-math t)


;;    (add-hook 'LaTeX-mode-hook 'visual-line-mode)
;;    (add-hook 'LaTeX-mode-hook 'flyspell-mode)
;;    (add-hook 'LaTeX-mode-hook 'LaTeX-math-mode))
;;    (add-hook 'LaTeX-mode-hook
;; 	     '(lambda ()
;; 		(define-key LaTeX-mode-map (kbd "$") 'self-insert-command)))

Themes

(use-package spacemacs-theme
  :ensure t
  :defer 1)

(add-to-list 'default-frame-alist '(ns-appearance . dark))
  (set-face-attribute 'default nil
			:family "Roboto Mono Light" :height 120 :weight 'normal)

  (custom-set-variables
 '(spacemacs-theme-comment-bg nil)
 '(spacemacs-theme-org-bold nil)
 '(spacemacs-theme-org-height nil)
 '(spacemacs-theme-org-highlight nil)
 '(spacemacs-theme-org-height nil)
 '(spacemacs-theme-org-priority-bold nil))

(load-theme 'spacemacs-dark t)

(custom-set-faces
 '(default ((t (:family "Roboto Mono" :foundry "pyrs" :slant normal :weight normal :height 120 :width normal)))))

Mode-line

(use-package smart-mode-line
  :ensure t
  :config
  (setq sml/theme 'respectful)
  (setq sml/no-confirm-load-theme t)
  (setq sml/shorten-directory t)
  (setq sml/shorten-modes t)
  (column-number-mode 1)
  (add-to-list 'sml/replacer-regexp-list '("^~/dotfiles/" ":dots:") t)
  (sml/setup))

Multi-term

(use-package multi-term
  :ensure t
  :bind (("C-c t" . multi-term-dedicated-toggle)
         ("C-c z" . multi-term))

  :config
  ;;(setq multi-term-program "/bin/bash")
  (setq multi-term-program "/usr/bin/zsh")
  (setq multi-term-dedicated-close-back-to-open-buffer-p t)
  (setq multi-term-dedicated-select-after-open-p t)
  (setq multi-term-dedicated-window-height 10))

Hyperbole

;; (use-package hyperbole
;;   :ensure t
;;   :bind ("C-c h" . hyperbole)
;;   :defer 1)

Ibuffer

 (setq ibuffer-saved-filter-groups
	(quote (("New"
	       
		 ("Dired"
		  (mode . dired-mode))
	       
		 ("Uni"
		  (filename . "documents/uni/"))
	       
		 ("Docs"
		  (filename . "documents/"))
	       
		 ("Terminal"
		  (or
		   (mode . term-mode)
		   (mode . eshell-mode)
		   ))
	       
	       
		 ("Magit" (name . "magit"))
	       
		 ("Special" (name . "*"))
	       
		 ))))

 (add-hook 'ibuffer-mode-hook
	    (lambda ()
	      (ibuffer-switch-to-saved-filter-groups "New")))


 (setq ibuffer-show-empty-filter-groups nil)


   ;; ;; Use human readable Size column instead of original one
   ;; (define-ibuffer-column size-h
   ;;   (:name "Size" :inline t)
   ;;   (cond
   ;;    ((> (buffer-size) 1000000) (format "%7.1fM" (/ (buffer-size) 1000000.0)))
   ;;    ((> (buffer-size) 100000) (format "%7.0fk" (/ (buffer-size) 1000.0)))
   ;;    ((> (buffer-size) 1000) (format "%7.1fk" (/ (buffer-size) 1000.0)))
   ;;    (t (format "%8d" (buffer-size)))))

   ;; ;; Modify the default ibuffer-formats
   ;;   (setq ibuffer-formats
   ;; 	'((mark modified read-only " "
   ;; 		(name 18 18 :left :elide)
   ;; 		" "
   ;; 		(size-h 9 -1 :right)
   ;; 		" "
   ;; 		(mode 16 16 :left :elide)
   ;; 		" "
   ;; 		filename-and-process)))

Deft

(use-package deft
  :ensure t
  :bind (("C-c i" . deft)
         ("C-c u" . deft-new-file))
  :config
  (setq deft-extensions '("org" "txt"))
  )

Nov

(use-package nov
  :ensure t
  :defer t
  :mode
  (("\\.epub\\'" . nov-mode))

  )

Recentf

(recentf-mode 1)
(setq recentf-max-menu-items 25)

Dired

(require 'dired-x)
(setq dired-omit-files "^\\...+$")
(setq dired-listing-switches "-alh")
(add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1)))

TRAMP

(setq remote-file-name-inhibit-cache nil)
(setq vc-ignore-dir-regexp
      (format "%s\\|%s"
                    vc-ignore-dir-regexp
                    tramp-file-name-regexp))
(setq tramp-verbose 1)

Gnus

Rust

(use-package rust-mode
  :ensure t)

Misc

;; ;;Better window switching
(use-package ace-window
  :ensure t
  :diminish (ace-window-mode . "")
  :init
    (global-set-key [remap other-window] 'ace-window))

(use-package hungry-delete
  :ensure t
  :diminish (hungry-delete-mode . "")
  :config (global-hungry-delete-mode))

(use-package speed-type
  :ensure t
  :defer t
  :config
  (add-hook 'speed-type-mode-hook 'visual-line-mode))

;; (use-package wttrin
;;   :ensure t
;;   :commands (wttrin)
;;   :init
;;   (setq wttrin-default-cities '("Toronto"
;; 				"Montreal"))
;;   (setq wttrin-default-accept-language '("Accept-Language" . "en-CA"))
;;   :bind
;;   ("C-c w" . wttrin))

Defaults

Functions

 (defun kill-other-buffers ()
	"Kill all other buffers."
	(interactive)
	(mapc 'kill-buffer (delq (current-buffer) (buffer-list)))
	(message "Other buffers killed"))

 (defun new-empty-buffer ()
   (interactive)
   (let (($buf (generate-new-buffer "zilch")))
     (switch-to-buffer $buf)
     (setq buffer-offer-save t)
     $buf
     (org-mode)
     ))

 (defun insert-date ()
 "Insert date at point."
 (interactive)
 (insert (format-time-string "%d/%m/%y")))

 (defun insert-time ()
 "Insert date at point."
 (interactive)
 (insert (format-time-string "%H:%M")))

 (defun insert-date-time ()
 "Insert date at point."
 (interactive)
 (insert (format-time-string "%d/%m/%Y %H:%M:%S")))

 (defun frame-resize ()
   (interactive)
   (set-frame-size (selected-frame) 120 40))

 (defun goto-todo ()
   (interactive)
   (find-file "~/sync/_.org"))

 (defun dired-open-file ()
   "In dired, open the file named on this line."
   (interactive)
   (let* ((file (dired-get-filename nil t)))
     (message "Opening %s..." file)
     (call-process "xdg-open" nil 0 nil file)
     (message "Opening %s done" file)))

 (defun dired-sort ()
   (interactive)
   (let ($sort-by $arg)
     (setq $sort-by (ido-completing-read "Sort by:" '( "date" "size" "name" )))
     (cond
      ((equal $sort-by "name") (setq $arg "-Alh "))
      ((equal $sort-by "date") (setq $arg "-Alh -t"))
      ((equal $sort-by "size") (setq $arg "-Alh -S"))
      (t (error "logic error 09535" )))
     (dired-sort-other $arg )))

Menu

(setq inhibit-startup-message t)
(tool-bar-mode -1)
(toggle-scroll-bar -1)
;;(menu-bar-mode -1)
(tooltip-mode -1)

(setq initial-scratch-message ";; Relax, its all good")

Scrolling

(global-set-key "\M-n" "\C-u1\C-v")
(global-set-key "\M-p" "\C-u1\M-v")

(setq mouse-wheel-scroll-amount '(1 ((shift) . 1)))
(setq mouse-wheel-progressive-speed nil)

(setq scroll-conservatively 10000
      scroll-preserve-screen-position t)

Mark

;;  (transient-mark-mode nil)

Disabled Commands

(put 'narrow-to-region 'disabled nil)          ; C-x n n
(put 'narrow-to-page 'disabled nil)            ; C-x n p
(put 'scroll-left 'disabled nil)               ; C-x > or <
(put 'downcase-region 'disabled nil)           ; C-x C-l
(put 'upcase-region 'disabled nil)             ; C-x C-u
(put 'set-goal-column 'disabled nil)           ; C-x C-n ==> disable with C-u
(put 'dired-find-alternate-file 'disabled nil) ; a in dired

Backups

;;backups
(setq backup-directory-alist '(("." . "~/.emacs.d/backups")))
(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t)))

Utf-8

;;use utf-8
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(prefer-coding-system 'utf-8)

Personal

;;Personal Information
(setq user-full-name "Zachary Dawood"
      user-mail-address "[email protected]")

Shell

Shell is weird on mac delete set-exec-path-from-shell-PATH when on linux

(setq explicit-shell-file-name "/bin/bash")

;; Getting shell to use the correct path
(defun set-exec-path-from-shell-PATH ()
 (let ((path-from-shell (replace-regexp-in-string
			   "[ \t\n]*$"
			    ""
			    (shell-command-to-string "$SHELL --login -i -c 'echo $PATH'"))))
    (setenv "PATH" path-from-shell)
    (setq eshell-path-env path-from-shell) ; for eshell users
    (setq exec-path (split-string path-from-shell path-separator))))

(when window-system (set-exec-path-from-shell-PATH))

Bindings

(global-unset-key (kbd "C-z"))

(global-set-key (kbd "C-c b") 'previous-buffer)
(global-set-key (kbd "C-c c") 'org-capture)
(global-set-key (kbd "C-c d") 'dired-jump)
(global-set-key (kbd "C-c e") 'ibuffer)
(global-set-key (kbd "C-c f") 'next-buffer)
(global-set-key (kbd "C-c h") 'help)
(global-set-key (kbd "C-c j") 'clean-buffer-list)
(global-set-key (kbd "C-c k") 'kill-this-buffer)
(global-set-key (kbd "C-c n") 'new-empty-buffer)
(global-set-key (kbd "C-c m") 'flyspell-mode)
(global-set-key (kbd "C-c o") 'calc)
(global-set-key (kbd "C-c p") 'calculator)
(global-set-key (kbd "C-c q") 'read-only-mode)
(global-set-key (kbd "C-c r") 'recentf-open-files)
(global-set-key (kbd "C-c v") 'visual-line-mode)
(global-set-key (kbd "C-c x") 'imenu)
(global-set-key (kbd "C-c y") 'rename-buffer)
(global-set-key (kbd "C-c 1") 'insert-date)
(global-set-key (kbd "C-c 2") 'insert-time)
(global-set-key (kbd "C-c 3") 'insert-date-time)
(global-set-key (kbd "C-c \S-a") 'clone-indirect-buffer)
(global-set-key (kbd "C-c \S-c") 'calendar)
(global-set-key (kbd "C-c \S-d") 'ido-dired)
(global-set-key (kbd "C-c \S-e") 'eshell)
(global-set-key (kbd "C-c \S-g") 'goto-line)
(global-set-key (kbd "C-c \S-p") 'proced)
(global-set-key (kbd "C-c \S-l") 'eval-region)
(global-set-key (kbd "C-c \S-r") 'frame-resize)
(global-set-key (kbd "C-c \S-s") 'speedbar)
(global-set-key (kbd "C-c \S-w") 'eww)
(global-set-key (kbd "C-c \S-v") 'goto-todo)
(global-set-key (kbd "C-c \S-z") 'zone)

(global-set-key (kbd "C-x k") 'kill-other-buffers)

(global-set-key (kbd "<prior>")
		  (lambda () (interactive) (next-line -5)))
(global-set-key (kbd "<next>")
		  (lambda () (interactive) (next-line 5)))

(define-key dired-mode-map (kbd "1") (lambda () (interactive) (find-alternate-file "~/")))
(define-key dired-mode-map (kbd "2") (lambda () (interactive) (find-alternate-file "~/documents")))
(define-key dired-mode-map (kbd "3") (lambda () (interactive) (find-alternate-file "~/downloads")))
(define-key dired-mode-map (kbd "4") (lambda () (interactive) (find-alternate-file "~/dotfiles")))
(define-key dired-mode-map (kbd "5") (lambda () (interactive) (find-alternate-file "~/sync")))
(define-key dired-mode-map (kbd "6") (lambda () (interactive) (find-alternate-file "~/documents/uni")))
(define-key dired-mode-map (kbd "7") (lambda () (interactive) (find-alternate-file "~/dotfiles")))
(define-key dired-mode-map (kbd "8") (lambda () (interactive) (find-alternate-file "~/documents/misc/")))
(define-key dired-mode-map (kbd "9") (lambda () (interactive) (find-alternate-file "~/documents/books/")))
(define-key dired-mode-map (kbd "0") (lambda () (interactive) (find-alternate-file "~/documents/code/")))
(define-key dired-mode-map [S-down-mouse-1] 'dired-find-alternate-file)


(define-key dired-mode-map (kbd ",") 'dired-hide-details-mode)
(define-key dired-mode-map (kbd "z") 'dired-open-file)
(define-key dired-mode-map (kbd "/") 'dired-omit-mode)
(define-key dired-mode-map (kbd "s") 'dired-sort)

Misc

;;Frame Size
(when window-system (set-frame-size (selected-frame) 120 40))

;;This is for line wrapping
(add-hook 'text-mode-hook 'turn-on-visual-line-mode)
(diminish 'visual-line-mode)
(diminish 'auto-revert-mode)

(delete-selection-mode t)

(setq-default cursor-type 'bar)
(blink-cursor-mode 1)

(setq zone-programs [zone-pgm-putz-with-case zone-pgm-rotate-LR-variable zone-pgm-rotate-RL-lockstep zone-pgm-rotate])

(setq confirm-kill-processes nil)


;;Go away
(setq visible-bell t)
(setq ring-bell-function 'ignore)

;;Save Buffer State
;;(desktop-save-mode 1)

(defalias 'yes-or-no-p 'y-or-n-p)

;;highlight matching parentheses
(show-paren-mode 1)
(setq show-paren-delay 0)

;;Add other bracket
(electric-pair-mode 1)

;;new buffer mode
(setq-default major-mode 'org-mode)

;;Birthday
(when (string= "08-08" (format-time-string "%m-%d"))
  (run-with-idle-timer
   1 nil
   (lambda ()
     (let (cursor-type)
	 (animate-birthday-present Zach)))))


(setq clean-buffer-list-delay-general 1)

Zone

;; (use-package zone
;;   :ensure t
;;   :config
;;   (zone-when-idle 10)
;;   (add-hook 'zone-mode-hook 'visual-line-mode)
;;   (setq zone-programs [zone-pgm-putz-with-case])
;;   )

Server

;;  (server-start)