Skip to content

Instantly share code, notes, and snippets.

@andrevdm
Created April 14, 2015 07: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 andrevdm/1aea10918ef7cf096ba5 to your computer and use it in GitHub Desktop.
Save andrevdm/1aea10918ef7cf096ba5 to your computer and use it in GitHub Desktop.
init.el
;;package sources
(load "package")
(package-initialize)
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(add-to-list 'package-archives
'("gnu" . "http://elpa.gnu.org/packages/") t)
(add-to-list 'package-archives
'("org" . "http://orgmode.org/elpa/") t)
(setq package-archive-enable-alist '(("melpa" deft magit)))
;;install default packaged
(message "%s" "Refreshing package database...")
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar my-packages '(eimp
evil-leader
evil-paredit
evil-tabs
elscreen
evil
fsharp-mode
goto-chg
haskell-mode
httpd
impatient-mode
clojure-mode
omnisharp
flycheck
auto-complete
paredit
pkg-info
epl
dash
popup
pos-tip
project-explorer
es-windows
es-lib
relative-line-numbers
sauron
simple-httpd
undo-tree
tracking
shorten
s
coffee-mode
csharp-mode
erlang
feature-mode
gist
graphviz-dot-mode
htmlize
markdown-mode
marmalade
writegood-mode
org
;;ido
helm
restclient
web-mode
yaml-mode
cyberpunk-theme
))
(dolist (p my-packages)
(when (not (package-installed-p p))
(package-install p)))
;;NeoTree
(add-to-list 'load-path "~/.emacs.d/neotree")
(require 'neotree)
(global-set-key [f8] 'neotree-toggle)
(add-hook 'neotree-mode-hook
(lambda ()
(define-key evil-normal-state-local-map (kbd "TAB") 'neotree-enter)
(define-key evil-normal-state-local-map (kbd "SPC") 'neotree-enter)
(define-key evil-normal-state-local-map (kbd "q") 'neotree-hide)
(define-key evil-normal-state-local-map (kbd "RET") 'neotree-enter)))
;;UI defaults
(scroll-bar-mode -1)
(tool-bar-mode -1)
(menu-bar-mode -1)
;;display defaults
;;(when window-system
;; (setq frame-title-format '(buffer-file-name "%f" ("%b")))
;; (set-face-attribute 'default nil
;; :family "Inconsolata"
;; :height 140
;; :weight 'normal
;; :width 'normal)
;;
;; (when (functionp 'set-fontset-font)
;; (set-fontset-font "fontset-default"
;; 'unicode
;; (font-spec :family "DejaVu Sans Mono"
;; :width 'normal
;; :size 12.4
;; :weight 'normal))))
(setq-default indicate-empty-lines t)
(when (not indicate-empty-lines)
(toggle-indicate-empty-lines))
;;No tabs
(setq tab-width 2
indent-tabs-mode nil)
;;y=yes, n=no
(defalias 'yes-or-no-p 'y-or-n-p)
;;Flyspell settings
(setq flyspell-issue-welcome-flag nil)
(if (eq system-type 'darwin)
(setq-default ispell-program-name "/usr/local/bin/aspell")
(setq-default ispell-program-name "/usr/bin/aspell"))
(setq-default ispell-list-command "list")
(global-flycheck-mode t)
;;zsh hook
(add-to-list 'auto-mode-alist '("\\.zsh$" . shell-script-mode))
;;2 space indent for JS mode
(defun js-custom ()
"js-mode-hook"
(setq js-indent-level 2))
(add-hook 'js-mode-hook 'js-custom)
;;markdown mode settings
(add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.mdown$" . markdown-mode))
(add-hook 'markdown-mode-hook
(lambda ()
(visual-line-mode t)
(writegood-mode t)
(flyspell-mode t)))
(setq markdown-command "pandoc --smart -f markdown -t html")
;;EVIL mode
(add-to-list 'load-path "~/.emacs.d/evil")
(setq evil-search-module 'evil-search
evil-want-C-u-scroll t
evil-want-C-w-in-emacs-state t)
(require 'evil)
(evil-mode 1)
;; EVIL - esc quits
(define-key evil-normal-state-map [escape] 'keyboard-quit)
(define-key evil-visual-state-map [escape] 'keyboard-quit)
(define-key minibuffer-local-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-ns-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-completion-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-must-match-map [escape] 'minibuffer-keyboard-quit)
(define-key minibuffer-local-isearch-map [escape] 'minibuffer-keyboard-quit)
;;EVIL - colours
(set-face-attribute 'default nil :height 100)
(setq evil-emacs-state-cursor '("red" box))
(setq evil-normal-state-cursor '("green" box))
(setq evil-visual-state-cursor '("orange" box))
(setq evil-insert-state-cursor '("green" bar))
(setq evil-replace-state-cursor '("red" bar))
(setq evil-operator-state-cursor '("red" hollow))
;;EVIL - nav windows with hjkl
(define-key evil-normal-state-map (kbd "C-h") 'evil-window-left)
(define-key evil-normal-state-map (kbd "C-j") 'evil-window-down)
(define-key evil-normal-state-map (kbd "C-k") 'evil-window-up)
(define-key evil-normal-state-map (kbd "C-l") 'evil-window-right)
;;EVIL - relative lin numbers on
(global-relative-line-numbers-mode t)
;;EVIL - misc
(define-key global-map (kbd "RET") 'newline-and-indent)
;;; ORG Mode
;; Org-mode settings
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(setq org-src-fontify-natively t)
;;; Omnisharp
(eval-after-load 'company
'(add-to-list 'company-backends 'company-omnisharp))
;;IDO
;;(setq ido-enable-flex-matching t)
;;(setq ido-everywhere t)
;;(ido-mode 1)
;;theme
;(if window-system
; (load-theme 'solarized-light t)
; (load-theme 'wombat t))
(load-theme 'cyberpunk t)
;;;Startup
(setq inhibit-splash-screen t)
(icomplete-mode 99)
(require 'fsharp-mode)
;;;Helm
(require 'helm)
(require 'helm-config)
(helm-mode 1)
(setq helm-quick-update t ; do not display invisible candidates
helm-split-window-in-side-p t ; open helm buffer inside current window, not occupy whole other window
helm-buffers-fuzzy-matching t ; fuzzy matching buffer names when non--nil
helm-move-to-line-cycle-in-source t ; move to end or beginning of source when reaching top or bottom of source.
helm-ff-search-library-in-sexp t ; search for library in `require' and `declare-function' sexp.
helm-scroll-amount 8 ; scroll 8 lines other window using M-<next>/M-<prior>
helm-ff-file-name-history-use-recentf t)
(setq backup-inhibited t)
;;;Haskell
(require 'haskell-interactive-mode)
(require 'haskell-process)
(add-hook 'haskell-mode-hook 'interactive-haskell-mode)
(custom-set-variables
'(haskell-process-suggest-remove-import-lines t)
'(haskell-process-auto-import-loaded-modules t)
'(haskell-process-log t))
;;Omnisharp + EVIL integration
;; Example evil-mode config
(evil-define-key 'insert omnisharp-mode-map (kbd "M-.") 'omnisharp-auto-complete)
(evil-define-key 'normal omnisharp-mode-map (kbd "<f12>") 'omnisharp-go-to-definition)
(evil-define-key 'normal omnisharp-mode-map (kbd "g u") 'omnisharp-find-usages)
(evil-define-key 'normal omnisharp-mode-map (kbd "g I") 'omnisharp-find-implementations) ; g i is taken
(evil-define-key 'normal omnisharp-mode-map (kbd "g o") 'omnisharp-go-to-definition)
(evil-define-key 'normal omnisharp-mode-map (kbd "g r") 'omnisharp-run-code-action-refactoring)
(evil-define-key 'normal omnisharp-mode-map (kbd "g f") 'omnisharp-fix-code-issue-at-point)
(evil-define-key 'normal omnisharp-mode-map (kbd "g F") 'omnisharp-fix-usings)
(evil-define-key 'normal omnisharp-mode-map (kbd "g R") 'omnisharp-rename)
(evil-define-key 'normal omnisharp-mode-map (kbd ", i") 'omnisharp-current-type-information)
(evil-define-key 'normal omnisharp-mode-map (kbd ", I") 'omnisharp-current-type-documentation)
(evil-define-key 'insert omnisharp-mode-map (kbd ".") 'omnisharp-add-dot-and-auto-complete)
(evil-define-key 'normal omnisharp-mode-map (kbd ", n t") 'omnisharp-navigate-to-current-file-member)
(evil-define-key 'normal omnisharp-mode-map (kbd ", n s") 'omnisharp-navigate-to-solution-member)
(evil-define-key 'normal omnisharp-mode-map (kbd ", n f") 'omnisharp-navigate-to-solution-file-then-file-member)
(evil-define-key 'normal omnisharp-mode-map (kbd ", n F") 'omnisharp-navigate-to-solution-file)
(evil-define-key 'normal omnisharp-mode-map (kbd ", n r") 'omnisharp-navigate-to-region)
;(evil-define-key 'normal omnisharp-mode-map (kbd "<f12>") 'omnisharp-show-last-auto-complete-result)
;(evil-define-key 'insert omnisharp-mode-map (kbd "<f12>") 'omnisharp-show-last-auto-complete-result)
(evil-define-key 'normal omnisharp-mode-map (kbd ",.") 'omnisharp-show-overloads-at-point)
;(evil-define-key 'normal omnisharp-mode-map (kbd ",rl") 'recompile)
(evil-define-key 'normal omnisharp-mode-map (kbd ",rl") 'omnisharp-build-in-emacs)
(evil-define-key 'normal omnisharp-mode-map (kbd ",rt")
(lambda() (interactive) (omnisharp-unit-test "single")))
(evil-define-key 'normal omnisharp-mode-map
(kbd ",rf")
(lambda() (interactive) (omnisharp-unit-test "fixture")))
(evil-define-key 'normal omnisharp-mode-map
(kbd ",ra")
(lambda() (interactive) (omnisharp-unit-test "all")))
;; Speed up auto-complete on mono drastically. This comes with the
;; downside that documentation is impossible to fetch.
(setq omnisharp-auto-complete-want-documentation nil)
;;;C# mode
(defun my-csharp-mode-hook ()
(electric-pair-mode 0)
;(c-default-style "linux")
(c-set-offset 'substatement-open 0)
(c-set-offset 'arglist-intro '+)
(c-set-offset 'statement-cont 0))
(add-hook 'csharp-mode-hook 'my-csharp-mode-hook)
(add-hook 'csharp-mode-hook 'omnisharp-mode)
(setq c-basic-offset 4)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment