(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)(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 - 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)))
;; 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))
(use-package yasnippet
:ensure t
:defer 2
:diminish (yas-minor-mode . "")
:config (yas-global-mode 1))
(use-package yasnippet-snippets
:ensure t
:defer t)(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)))(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")
))
)
;;Git Control
(use-package magit
:ensure t
:bind (("C-c g" . magit-status)
("C-c l" . magit-log)));; 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)))
(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)))))(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))
(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))
;; (use-package hyperbole
;; :ensure t
;; :bind ("C-c h" . hyperbole)
;; :defer 1) (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)))(use-package deft
:ensure t
:bind (("C-c i" . deft)
("C-c u" . deft-new-file))
:config
(setq deft-extensions '("org" "txt"))
)(use-package nov
:ensure t
:defer t
:mode
(("\\.epub\\'" . nov-mode))
)(recentf-mode 1)
(setq recentf-max-menu-items 25)
(require 'dired-x)
(setq dired-omit-files "^\\...+$")
(setq dired-listing-switches "-alh")
(add-hook 'dired-mode-hook (lambda () (dired-omit-mode 1)))(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)(use-package rust-mode
:ensure t);; ;;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)) (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 )))(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")(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);; (transient-mark-mode nil)
(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
(setq backup-directory-alist '(("." . "~/.emacs.d/backups")))
(setq auto-save-file-name-transforms '((".*" "~/.emacs.d/auto-save-list/" t)));;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 Information
(setq user-full-name "Zachary Dawood"
user-mail-address "[email protected]")
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))
(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);;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);; (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-start)