Skip to content

Latest commit

 

History

History
422 lines (339 loc) · 13 KB

init.org

File metadata and controls

422 lines (339 loc) · 13 KB

Beautiful Emacs

;; as org file examples...
;; https://raw.githubusercontent.com/dieggsy/dotfiles/master/emacs.d/init.org
;; http://mescal.imag.fr/membres/arnaud.legrand/misc/init.org

;; TODO: flycheck, theme (icons), beautiful- : kill all buffers, diminish
;; TODO:
;; (when (memq window-system '(mac ns))
;;   (exec-path-from-shell-initialize))


;; bootstrap straight.el package manager
(let ((bootstrap-file (concat user-emacs-directory "straight/bootstrap.el"))
      (bootstrap-version 2))
  (unless (file-exists-p bootstrap-file)
    (with-current-buffer
        (url-retrieve-synchronously
         "https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
         'silent 'inhibit-cookies)
      (goto-char (point-max))
      (eval-print-last-sexp)))
  (load bootstrap-file nil 'nomessage))

;; bootstrap `use-package` via straight so it is overloaded to use straight.el
(straight-use-package 'use-package)

(use-package f
  :ensure t)

(use-package exec-path-from-shell
  :ensure t
  :config
  (when (memq window-system '(mac ns))
    (exec-path-from-shell-initialize)))

(use-package dumb-jump
  :bind (("M-g o" . dumb-jump-go-other-window)
         ("M-g j" . dumb-jump-go)
         ("M-g i" . dumb-jump-go-prompt)
         ("M-g x" . dumb-jump-go-prefer-external)
         ("M-g z" . dumb-jump-go-prefer-external-other-window))
  :config (setq dumb-jump-selector 'ivy dumb-jump-force-searcher 'ag dumb-jump-aggressive nil dumb-jump-debug nil dumb-jump-use-visible-window nil) ;; (setq dumb-jump-selector 'helm)
  :ensure t)

(use-package ido-completing-read+
  :ensure t
  :config
  (ido-ubiquitous-mode t))

(use-package all-the-icons
  :if window-system
  :ensure t
  :config
  (when (not (member "all-the-icons" (font-family-list)))
    (all-the-icons-install-fonts t)))

(use-package zerodark-theme
  :ensure t
  :config
  (load-theme 'zerodark t nil)
  (zerodark-setup-modeline-format))

(use-package rainbow-delimiters
  :ensure t
  :config
  (add-hook 'hy-mode-hook 'rainbow-delimiters-mode)
  (add-hook 'clojure-mode-hook 'rainbow-delimiters-mode)
  (add-hook 'emacs-lisp-mode-hook 'rainbow-delimiters-mode))

(use-package swiper
  :ensure t
  :bind (("C-s" . swiper)))

(use-package dumb-diff
   :ensure t
   :recipe (:host github :repo "jacktasia/dumb-diff"))

(use-package pmdm
  :ensure t
  :recipe (:host github :repo "jacktasia/pmdm.el")
  :config
  (add-hook 'kill-emacs-hook 'pmdm-write-opened-files)
  (pmdm-load-files))

(use-package beautiful-emacs
  :ensure t
  :recipe (:host github :repo "jacktasia/beautiful-emacs")
  :bind (("C-c b" . beautiful-git-blame-line)
	 ("C-c 5" . beautiful-eval-buffer)
	 ("M-," . beautiful-new-scratch)
	 ("M-u" . beautiful-backward-kill-line)
	 ("C-c u" . beautiful-reload-config)
	 ("C-c x" . beautiful-kill-all-buffers)
	 ("C-<backspace>" . beautiful-backward-delete-word)))

(use-package visual-regexp
  :ensure t
  :bind (("C-c r" . vr/replace)
	 ("C-c q" . vr/query-replace)))

(use-package whitespace-mode
  :bind (("C-c w" . whitespace-mode))
  :config
  (setq whitespace-line-column 60000))

(use-package expand-region
  :ensure t
  :bind (("C-c e" . er/mark-symbol)))

(use-package highlight-symbol
  :ensure t
  ;;:commands (highight-symbol-at-point)
  :bind (("s-p" . highlight-symbol-prev)
	 ("s-n" . highlight-symbol-next)
         ("M-p" . highlight-symbol-prev)
	 ("M-n" . highlight-symbol-next)
	 ("M-g h" . highlight-symbol-at-point))
  :config
  (highlight-symbol-nav-mode 1))

(use-package fic-mode
  :ensure t
  :config
  (add-hook 'clojure-mode-hook 'fic-mode)
  (add-hook 'go-mode-hook 'fic-mode)
  (add-hook 'python-mode-hook 'fic-mode)
  (add-hook 'javascript-mode-hook 'fic-mode)
  (add-hook 'js-mode-hook 'fic-mode)
  (add-hook 'web-mode-hook 'fic-mode)
  (add-hook 'java-mode-hook 'fic-mode)
  (add-hook 'emacs-lisp-mode-hook 'fic-mode)
  (add-hook 'web-mode-hook 'fic-mode)
  (add-hook 'js2-mode-hook 'fic-mode)
  (add-hook 'terraform-mode-hook 'fic-mode))

(use-package avy
  :ensure t
  :bind (("M-g l" . avy-goto-line)
	 ("M-g c" . avy-goto-char)
	 ("M-g w" . avy-goto-word-0)
	 ("M-g t" . avy-goto-char-timer))
  :config
  (setq avy-all-windows nil)
  (setq avy-keys (number-sequence ?a ?z)))

(use-package ws-butler 
  :ensure t
  :config
  (ws-butler-global-mode t))

(use-package smex
  :ensure t
  :config
  (smex-initialize))


(use-package key-chord
  :ensure t
  :recipe (:host github :repo "emacsmirror/key-chord")
  :config
  (key-chord-mode 1)
  (key-chord-define-global "fj" 'avy-goto-char))


(use-package anzu
  :ensure t
  :config
  (global-anzu-mode +1)
  (set-face-attribute 'anzu-mode-line nil :foreground "light green" :weight 'bold)
  (setq anzu-cons-mode-line-p nil)
  (setcar (cdr (assq 'isearch-mode minor-mode-alist))
	  '(:eval (anzu--update-mode-line))))


(use-package uniquify
  :config
  (setq uniquify-buffer-name-style 'post-forward-angle-brackets) ;; or "forward"
  (setq uniquify-min-dir-content 3))


(use-package bind-key
  :ensure t
  :bind (("C-c p" . beginning-of-buffer)
         ("C-c l" . goto-line)
         ("C-c n" . end-of-buffer)))

(use-package multiple-cursors
  :ensure t
  :bind (("C-<return>" . set-rectangular-region-anchor)))

(use-package company-jedi
  :ensure t)

(use-package company-anaconda
  :ensure t)

(use-package company
  :ensure t
  :bind (:map company-active-map
         ("C-p" . beautiful-company-move-up)
	 ("C-n" . beautiful-company-move-down))
  :config
  (setq company-dabbrev-downcase nil)
  (add-hook 'after-init-hook 'global-company-mode)
  (add-to-list 'company-backends 'company-anaconda)
  (add-hook 'python-mode-hook 'anaconda-mode)
  (setq company-idle-delay 0.1))

(use-package ivy
  :ensure t
  :bind (("C-x b" . ivy-switch-buffer)))

(use-package switch-window
  :ensure t
  :bind (("M-o" . switch-window)))


(use-package hydra
  :ensure t
  :config
  (defhydra hydra-tmux-memory
    (global-map "C-t")
    "tmux muscle memeory bindings"
    ("e" eval-expression "eval expression"  :exit t)
    ("d" beautiful-debug-symbol-at-point "debug"  :exit t)
    ("\"" split-window-below "split below"  :exit t)
    ("'" split-window-below "split below"  :exit t)
    ("%" split-window-right "split window right"  :exit t)
    ("5" split-window-right "split window right"  :exit t)
    ("q" switch-window "switch window"  :exit t)
    ("o" other-window "other window"  :exit t)
    ("w" ivy-switch-buffer "list buffers"  :exit t)
    ("z" delete-other-windows "zoom"  :exit t))
  (defhydra hydra-diff
    (global-map "C-c d")
    "diff tools"
    ("g" beautiful-git-diff "git-diff"  :exit t)
    ("d" dumb-diff "dumb-diff"  :exit t)
    ("1" dumb-diff-set-region-as-buffer1 "inject into diff buf 1"  :exit t)
    ("2" dumb-diff-set-region-as-buffer2 "inject into diff buf 2"  :exit t)))


(use-package auto-read-only
  :ensure t
  :config
  (auto-read-only-mode 1)
  (add-to-list 'auto-read-only-file-regexps "~/.emacs.d/init.el"))

(use-package counsel
  :bind (("M-x" . counsel-M-x)
         ("C-x C-f" . counsel-find-file)
         ("<f1> f" . counsel-describe-function)
         ("<f1> v" . counsel-describe-variable)
         ("<f1> l" . counsel-load-library)
         ("<f2> i" . counsel-info-lookup-symbol)
         ("<f2> u" . counsel-unicode-char))
  :ensure t)

(use-package projectile
  :diminish
  :config
  (projectile-global-mode +1)
  (setq projectile-enable-caching t)
  :ensure t)

(use-package counsel-projectile
  :bind (("s-t" . counsel-projectile-find-file)
         ("s-o" . counsel-projectile-find-file))
  :ensure t)


(use-package helm-ag :ensure t)
(use-package helm-projectile
  :bind (("M-g f" . beautiful-helm-projectile-ag-at-point))
  :ensure t)

(use-package persistent-scratch
  :if window-system
  :ensure t
  :config
  (persistent-scratch-setup-default))

(use-package undo-tree
  :bind (:map undo-tree-map
              ("C-x u" . undo-tree-undo)
              ("s-Z" . undo-tree-redo)
              ("C-x v" . undo-tree-visualize))
  :config (global-undo-tree-mode t))


(use-package smartparens
  :bind (("M-g a" . sp-beginning-of-sexp))
  :bind (("M-g e" . sp-end-of-sexp))
  :ensure t)

(use-package magit
  :bind (("C-x m" . magit-status))
  :ensure t)

(use-package diff-hl
  :bind (("C-c 8" . diff-hl-previous-hunk)
         ("C-c 9" . diff-hl-next-hunk))
  :config (global-diff-hl-mode 1)
  :ensure t)

(use-package files
  :bind (("s-r" . revert-buffer)))

(use-package go-mode
  :ensure t
  :config
  (if (string-equal system-type "darwin")
      (setq gofmt-command "gofmt")
    (setq gofmt-command "~/go/bin/gofmt")))

(use-package midnight-mode
  :config
  (midnight-mode))







(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.
 '(auto-dim-other-buffers-face ((t (:background "#424450"))))
 '(isearch ((((class color) (min-colors 89)) (:background "#ddbd78" :foreground "#3e4451"))))
 '(rainbow-delimiters-depth-1-face ((t (:foreground "white"))))
 '(rainbow-delimiters-depth-2-face ((t (:foreground "dark orange"))))
 '(rainbow-delimiters-depth-3-face ((t (:foreground "yellow"))))
 '(rainbow-delimiters-depth-4-face ((t (:foreground "green"))))
 '(rainbow-delimiters-depth-5-face ((t (:foreground "cyan"))))
 '(rainbow-delimiters-depth-6-face ((t (:foreground "blue"))))
 '(rainbow-delimiters-depth-7-face ((t (:foreground "dark violet"))))
 '(rainbow-delimiters-depth-8-face ((t (:foreground "magenta"))))
 '(rainbow-delimiters-depth-9-face ((t (:foreground "saddle brown"))))
 '(show-paren-match ((((class color) (min-colors 89)) (:background "#1f5582"))))
 '(swiper-line-face ((t (:inherit highlight :background "gray0" :foreground "gray100"))))
 '(vhl/default-face ((t (:inherit default :background "yellow2")))))

;; TODO: add all packages
;; TODO: add all packages config
;; TODO: add all built-in keybindings...
;; TODO: add in all jack-util.el code that is _still_ being used....

;;
;; start built-in config changes
;;
(setq visible-bell nil)
(setq ring-bell-function 'ignore)

(setq tramp-default-method "scpx")
(setq clean-buffer-list-delay-general 7)
(show-paren-mode t)
(add-to-list 'auto-mode-alist '("\\.el\\'" . emacs-lisp-mode))
(setq org-log-done t)                                                         ;; show done time when marking a todo done
(defalias 'yes-or-no-p 'y-or-n-p)                                             ;; don't require full "yes" for confirms
(tool-bar-mode -1)                                                            ;; get rid of tool bar
(setq inhibit-startup-message t)                                              ;; git rid of startup page
(menu-bar-mode 0)                                                             ;; no menu bar
(setq resize-mini-windows t)                                                  ;; let mini buffer resize
(setq make-backup-files nil)                                                  ;; no backup files
(setq-default c-electric-flag nil)                                            ;; do not get fancy with () {} ?
(setq whitespace-line-column 60000)                                           ;; do not turn line purple if "too long"
(blink-cursor-mode 0)                                                         ;; no blinking cursor
(setq initial-scratch-message "")                                             ;; no scratch message
(electric-indent-mode 0)                                                      ;; stop electric mode from being too smart for its own good
(global-hl-line-mode 1)
;; (global-auto-revert-mode 1)                                                ;; so git branch changes and checkouts update the mode line (slow, so disabled)
(setq auto-revert-check-vc-info nil)
(setq confirm-kill-emacs 'y-or-n-p)
(setq message-log-max t)                                                      ;; If t, log messages but don't truncate the buffer when it becomes large.
(setq-default cursor-in-non-selected-windows nil)                             ;;
(setq column-number-mode t)                                                   ;;

(setq auto-save-file-name-transforms `((".*" ,temporary-file-directory t)))
(setq create-lockfiles nil)
(setq cua-enable-cua-keys nil)
(cua-mode)
(if window-system
  (set-fontset-font t 'unicode "Apple Color Emoji" nil 'prepend))
;; http://stackoverflow.com/a/25438277/24998

(setq vc-follow-symlinks t) ;; maybe
(scroll-bar-mode -1)
(global-subword-mode t)                                                       ;; for better deleting of parts of camalcase symbols
(global-linum-mode)


(when (and (string-equal system-type "darwin") (member "Iosevka" (font-family-list)))
  (set-default-font "Iosevka"))


(let ((my-select-color "light green")) ;; #83F52C is a neon green, FF8300 is orange -- but plain "green" is also nice
  (set-face-background 'region my-select-color) ;; make region stick out more
  (set-cursor-color my-select-color))

(setq-default cursor-type '(bar . 2))

(defun display-startup-echo-area-message ()
  (message "~/.emacs loaded in %s!" (emacs-init-time)))

;;
;; end built-in config changes
;;