git.fiddlerwoaroof.com
Raw Blame History
;; -*- mode: Emacs-Lisp;tab-width: 8;indent-tabs-mode: nil; -*-
(setq gc-cons-threshold 100000000)
(message invocation-name)
(setq inhibit-splash-screen t)
(setq inhibit-startup-message t)

;;(let ((file-name-handler-alist nil))

(add-hook 'after-init-hook
          (lambda ()
            ;; (require 'projectile)
            ;; (require 'evil-numbers)

            (unless (fboundp 'server-running-p)
              (require 'server))
            (unless (server-running-p)
              (server-start))
            (projectile-mode)
            (evil-mode)
            (paredit-mode)
            ;;(global-company-mode)
            (setq linum-format "%5d\u2502")
            (global-linum-mode)
            (set-exec-path-from-shell-PATH)

            ;; NOTE: this must be here...
            (slime-setup)

            (global-company-mode 1)

            ))


(when (file-exists-p "/usr/local/bin/gls")
  (setq insert-directory-program "/usr/local/bin/gls"))


(let ((default-directory  "~/.emacs.d/lisp/"))
  (make-directory default-directory t)
  (normal-top-level-add-to-load-path '("."))
  (normal-top-level-add-subdirs-to-load-path)

  (load "utils"))

(setq default-directory "~/emacs-home/")
(make-directory default-directory t)

(setq vc-follow-symlinks t)

(require 'package)

(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("org" . "http://orgmode.org/elpa/")
                         ("melpa" . "https://melpa.org/packages/")
                         ("melpa-stable" . "http://stable.melpa.org/packages/"))
      package-archive-priorities '(("melpa-stable" . 1)
                                   ("gnu" . 0)
                                   ("melpa" . 2)
                                   ("org" . 3)))

(package-initialize)
(when (not (package-installed-p 'use-package))
  (package-refresh-contents)
  (package-install 'use-package))



(require 'use-package)
(use-package color-theme :ensure t)
(use-package zenburn-theme :ensure t)
(color-theme-initialize)
(load-theme 'zenburn t)

(use-package evil
  :ensure t
  :config

  (advice-add 'evil-delete-marks :after
              (lambda (&rest args)
                (evil-visual-mark-render)))

  (define-key evil-normal-state-map " o" 'slime-selector)
  (define-key evil-insert-state-map (kbd "TAB") 'company-indent-or-complete-common)
  (evil-mode)
  (use-package  evil-paredit
    :ensure t
    :after paredit
    :config
    (evil-paredit-mode))


  ;;(use-package evil-numbers
  ;;  :ensure t
  ;;  :config
  ;;  (global-set-key (kbd "C-c +") 'evil-numbers/inc-at-pt)
  ;;  (global-set-key (kbd "C-c -") 'evil-numbers/dec-at-pt))

  (use-package evil-surround
    :ensure t
    :config
    (global-evil-surround-mode))

  (use-package evil-leader
    :ensure t
    :config
    (global-evil-leader-mode)
    (evil-leader/set-leader ",")))

(use-package emmet-mode
  :ensure t
  :config
  (define-key evil-insert-state-map (kbd "C-c ,") 'emmet-expand-line)
  )

(use-package lisp-skeletons
  :config
  (add-hook 'skeleton-end-hook 'skeleton-make-markers)

  (define-key evil-insert-state-map (kbd "C-c j") 'skeleton-next-position)
  (define-key evil-insert-state-map (kbd "C-c k") 'skeleton-prev-position)
  (define-key evil-normal-state-map " g" 'helm-generate-lisp-skeleton)
  (define-key evil-visual-state-map " g" 'helm-generate-lisp-skeleton))

;;;;; INDENTATION SETUP  {{{
(progn
  (setq-default indent-tabs-mode nil
                tab-width 2)
  (defvaralias 'c-basic-offset 'tab-width)
  (defvaralias 'sh-basic-offset 'tab-width)
  (defvaralias 'js2-basic-offset 'tab-width)
  (defvaralias 'sgml-basic-offset 'tab-width)
  (defvaralias 'cperl-indent-level 'tab-width))

;;;;; }}}

(setq browse-url-browser-function
      'eww-browse-url)

 ;;;;; SLIME SETUP {{{
(use-package slime-company
  :no-require t
  :ensure t)

(load (expand-file-name "~/quicklisp/slime-helper.el"))

(run-with-idle-timer
 5 nil  ;slime isn't loaded via use-package because quicklisp-helper keeps it uptodate
 (lambda ()

   (when (and (boundp 'common-lisp-hyperspec-root)
              (string-prefix-p "/" common-lisp-hyperspec-root))
     (setq common-lisp-hyperspec-root
           (concat "file://" common-lisp-hyperspec-root)))

   ;; Replace "sbcl" with the path to your implementation
   (setq inferior-lisp-program "~/sbcl/bin/sbcl")

   (add-hook 'lisp-mode-hook
             '(lambda ()
                ;;(define-key evil-insert-state-map "^N" 'slime-fuzzy-indent-and-complete-symbol)
                (unless (string= "*slime-scratch*" (buffer-name))
                  (paredit-mode)
                  (evil-paredit-mode))
                (rainbow-delimiters-mode))) 
   (setq slime-contribs
         '(slime-fancy
           slime-company
           slime-macrostep
           slime-trace-dialog
           slime-mdot-fu))
   

   (modify-syntax-entry ?- "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?* "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?+ "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?! "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?$ "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?% "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?& "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?% "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?= "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?< "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?> "w" lisp-mode-syntax-table)
   ;;(modify-syntax-entry ?@ "w" lisp-mode-syntax-table)

   (modify-syntax-entry ?^ "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?_ "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?~ "w" lisp-mode-syntax-table)
   (modify-syntax-entry ?. "w" lisp-mode-syntax-table)

   ))

 ;;;;; }}}
(use-package company
  :defer 5
  :config
  ;; keybindings
  (progn (define-key company-active-map (kbd "C-c h") 'company-quickhelp-manual-begin)
         (define-key company-active-map (kbd "SPC") (kbd "RET SPC"))
         (define-key company-active-map (kbd "(") (kbd "RET SPC ("))
         (define-key company-active-map (kbd "{") (kbd "RET SPC {"))
         (define-key company-active-map (kbd "[") (kbd "RET [")))

  ;;(message "backends: %s" company-backends)
  (setq company-backends
        '(company-clang
          company-bbdb
          company-nxml
          company-css
          company-xcode
          company-cmake
          company-capf
          company-files
          (company-dabbrev-code
           company-gtags
           company-etags
           company-keywords)
          company-oddmuse
          company-dabbrev))
  )

(use-package projectile
  :ensure t
  :config
  (projectile-register-project-type
   'lisp '("*.asd"))
  
  (projectile-register-project-type
   'npm '("package.json")
   :compile "npm install"
   :test "npm test"
   :run "npm start"
   :test-suffix ".spec"))

(defmacro ensure-use-packages (&rest packages)
  (list* 'progn
         (mapcar (op `(use-package ,_
                        :ensure t))
                 packages)))

(use-package css-eldoc :ensure t)
(use-package ag :ensure t)
(use-package rainbow-delimiters :ensure t)
(use-package helm :ensure t)
(use-package helm-projectile :ensure t)
(use-package eldoc-eval :ensure t)
(use-package csv-mode :ensure t)
(use-package yaml-mode :ensure t)
(use-package web-mode :ensure t)
(use-package vue-mode :ensure t)
(use-package scss-mode :ensure t)
(use-package markdown-mode :ensure t)
(use-package magit :ensure t :defer 2)
(use-package highlight-parentheses :ensure t)
(use-package helm-projectile :ensure t)
(use-package helm-ls-git :ensure t)
(use-package helm-css-scss :ensure t)
;;(use-package ac-js2 :ensure t)
;;(use-package helm-cider :ensure t :defer 5)
(use-package helm-ag-r :ensure t)
(use-package helm-ag :ensure t)
(use-package project-explorer :ensure t)


(progn ; helm
  (require 'helm-config)
  (helm-mode)
  (global-set-key (kbd "C-x C-f") 'helm-find-files)
  (define-key evil-normal-state-map " f" 'helm-projectile)
  (define-key evil-normal-state-map " j" 'helm-buffers-list)
  (global-set-key (kbd "M-x") 'helm-M-x))


(use-package paredit
  :ensure t
  :config
  (defparedit-wrapper back-then-wrap paredit-wrap-sexp)
  (defparedit-wrapper back-then-wrap-square paredit-wrap-square)
  (defparedit-wrapper back-then-wrap-curly paredit-wrap-curly)
  (defparedit-wrapper back-then-wrap-angled paredit-wrap-angled)
  (defparedit-wrapper back-then-wrap-doublequote paredit-meta-doublequote)
  (define-key evil-normal-state-map ",W" 'back-then-wrap)
  (define-key evil-normal-state-map ",w]" 'back-then-wrap-square)
  (define-key evil-normal-state-map ",w}" 'back-then-wrap-curly)
  (define-key evil-normal-state-map ",w>" 'back-then-wrap-angled)
  (define-key evil-normal-state-map ",w\"" 'back-then-wrap-doublequote)

  (define-key evil-normal-state-map ",S" 'paredit-splice-sexp)
  (define-key evil-normal-state-map ",A" 'paredit-splice-sexp-killing-backward)
  (define-key evil-normal-state-map ",D" 'paredit-splice-sexp-killing-forward)
  (define-key evil-normal-state-map ",|" 'paredit-split-sexp)
  (define-key evil-normal-state-map ",J" 'paredit-join-sexps)
  (define-key evil-normal-state-map ",<" 'paredit-backward-slurp-sexp)
  (define-key evil-normal-state-map ",," 'paredit-backward-barf-sexp) 
  (define-key evil-normal-state-map ",>" 'paredit-forward-slurp-sexp)
  (define-key evil-normal-state-map ",." 'paredit-forward-barf-sexp) 
  (define-key evil-normal-state-map ",~" 'paredit-convolute-sexp))

(use-package editorconfig
  :ensure t
  :config
  (editorconfig-mode 1))

(define-key evil-normal-state-map "ZZ" 'save-buffer)

;;(modify-syntax-entry ?_ "w" js-mode-syntax-table)

(modify-syntax-entry ?- "w" emacs-lisp-mode-syntax-table)
(modify-syntax-entry ?_ "w" emacs-lisp-mode-syntax-table)

;;)

(setq custom-file "~/.emacs.d/custom.el")
(load-file custom-file)

(setq gc-cons-threshold (* 100 1024))

(setq fwoar.is-ordinary (not (string= invocation-name "EmacsNotes")))

(unless fwoar.is-ordinary
  (setq with-editor-emacsclient-executable "/usr/local/bin/emacsclient")
  (require 'cjpad)
  (find-file "~/notes.org"))