Skip to content

Instantly share code, notes, and snippets.

@erickgnavar
Created June 7, 2016 04:30
Show Gist options
  • Save erickgnavar/c263bacb4621ce63a2630aebdc6e23af to your computer and use it in GitHub Desktop.
Save erickgnavar/c263bacb4621ce63a2630aebdc6e23af to your computer and use it in GitHub Desktop.
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(package-initialize)
(when (not package-archive-contents)
(package-refresh-contents))
(defvar my-packages
'(
better-defaults
helm
helm-ag
neotree
magit
pbcopy
vimish-fold
nyan-mode
evil
evil-magit
evil-nerd-commenter
evil-surround
evil-leader
evil-vimish-fold
evil-tabs
ace-jump-mode
projectile
editorconfig
markdown-mode
powerline
autopair
yasnippet
smex
gruvbox-theme
gist
git-gutter
git-timemachine
expand-region
helm-dash
restclient
slime
erc-image
company-emoji
which-key
;; org packages
ox-twbs
;; ox-reveal
htmlize
writeroom-mode
;; lints
flycheck
flycheck-pyflakes
flycheck-elixir
;; languages
web-mode
emmet-mode
jsx-mode
yaml-mode
django-mode
go-mode
rust-mode
cargo
elixir-mode
alchemist
elpy
jedi
virtualenvwrapper
erlang
elm-mode
py-autopep8
lfe-mode))
;; install packages
(mapc #'(lambda (package)
(unless (package-installed-p package)
(package-install package)))
my-packages)
;; basic customization
(menu-bar-mode 1)
(setq inhibit-startup-message t)
(load-theme 'gruvbox t)
(column-number-mode t) ;; enable column number mode
(global-hl-line-mode 1) ;; highlight current line
;; (global-linum-mode)
(require 'smex)
(smex-initialize)
;; lints conf
(global-flycheck-mode)
;; Company mode
(require 'company)
(global-company-mode 1)
(setq company-idle-delay 0.1)
(setq company-tooltip-limit 10)
(setq company-minimum-prefix-length 2)
(setq company-tooltip-flip-when-above t)
(add-hook 'after-init-hook 'global-company-mode)
;; (require 'company-emoji)
;; (add-to-list 'company-backends 'company-emoji)
;; git
(global-git-gutter-mode t)
(git-gutter:linum-setup)
;; folding
;; (require 'vimish-fold)
;; (vimish-fold-global-mode 1)
(require 'evil-vimish-fold)
(evil-vimish-fold-mode 1)
;; which key
(which-key-setup-minibuffer)
; evil mode
(require 'evil)
(global-evil-leader-mode)
;; (evil-leader/set-leader ",")
(evil-leader/set-key
"f" 'find-file
"a" 'helm-ag-project-root
;; "e" 'projectile-find-file
"e" 'custom-find-file-projectile
"c" 'evilnc-comment-operator
;; "b" 'switch-to-buffer
"b" 'helm-buffers-list
"n" 'evil-buffer-new
"y" 'helm-show-kill-ring
"SPC" 'helm-M-x
"m" 'ace-jump-mode
"l" 'linum-mode
"s" 'toggle-spanish-characters
"k" 'kill-buffer)
(evil-mode 1)
;; custom keymap config
(global-set-key (kbd "C-\-") 'evilnc-comment-operator)
;; (nyan-mode) ; nyan bar :)
(require 'evil-nerd-commenter)
(evilnc-default-hotkeys)
;; surround
(require 'evil-surround)
(global-evil-surround-mode 1)
;; helm
(require 'helm-config)
(helm-mode 1)
;; Use tab for autocomplete search
(define-key helm-map (kbd "<tab>") 'helm-execute-persistent-action)
(setq helm-split-window-in-side-p t)
;; Show elm menu alway on bottom
(add-to-list 'display-buffer-alist
'("\\`\\*helm.*\\*\\'"
(display-buffer-in-side-window)
(inhibit-same-window . t)
(window-height . 0.4)))
(setq scroll-step 1
scroll-conservatively 10000)
(setq helm-swoop-split-with-multiple-windows nil
helm-swoop-split-direction 'split-window-vertically
helm-swoop-split-window-function 'helm-default-display-buffer)
;; magit
(require 'evil-magit)
;; fonts
(set-default-font "Monaco 12")
;; neotree
(require 'neotree)
(global-set-key [f3] 'neotree-toggle)
(add-hook 'neotree-mode-hook
(lambda ()
(evil-emacs-state)))
;; projectile
(projectile-global-mode)
;; use helm to show projectile completion results
(setq projectile-completion-system 'helm)
(defun custom-find-file-projectile ()
(interactive)
(if (projectile-project-p)
(projectile-find-file)
(helm-for-files)))
;; Ignore extensions globally
;; (setq projectile-globally-ignored-file-suffixes '("*.png" "*.jpg" "*.pyc" "*.beam" "*.class"))
;; editorconfig
(require 'editorconfig)
;; Enable editorconfig globally
(editorconfig-mode 1)
;; Rust conf
(add-hook 'rust-mode-hook 'cargo-minor-mode)
;; Lisp conf
(require 'slime)
(slime-setup '(slime-repl))
;; Compiler
(setq inferior-lisp-program "/usr/local/bin/sbcl")
;; elpy
(elpy-enable)
; (add-hook 'python-mode-hook 'jedi:setup)
(add-hook 'python-mode-hook
(lambda ()
;; (jedi:setup)
(evil-leader/set-key "t" 'elpy-test)))
(when (require 'flycheck nil t)
(setq elpy-modules (delq 'elpy-module-flymake elpy-modules))
(add-hook 'elpy-mode-hook 'flycheck-mode))
;; virtualenvwrapper
(require 'virtualenvwrapper)
(venv-initialize-interactive-shells) ;; if you want interactive shell support
(venv-initialize-eshell) ;; if you want eshell support
;; emmet
(require 'emmet-mode)
;; mode-line
;; (powerline-default-theme)
;; (setq powerline-default-separator 'wave)
;; web-mode
(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html.eex?\\'" . web-mode))
(setq web-mode-enable-current-element-highlight t)
(setq web-mode-enable-current-column-highlight t)
(add-hook 'web-mode-hook 'emmet-mode)
;; (add-hook 'web-mode-hook (setq web-mode-engine-alist '(("django" . "\\.html\\'"))))
(require 'autopair)
(autopair-global-mode)
;; snippets
(require 'yasnippet)
(yas-global-mode 1)
;; use ESC key instead C-g to close and abort
(defun minibuffer-keyboard-quit ()
"Abort recursive edit.
In Delete Selection mode, if the mark is active, just deactivate it;
then it takes a second \\[keyboard-quit] to abort the minibuffer."
(interactive)
(if (and delete-selection-mode transient-mark-mode mark-active)
(setq deactivate-mark t)
(when (get-buffer "*Completions*") (delete-windows-on "*Completions*"))
(abort-recursive-edit)))
(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)
(global-set-key [escape] 'evil-exit-emacs-state)
;; setup backups directory
(setq backup-directory-alist '(("." "~/.emacs.d/backups")))
;; fix accents
(require 'iso-transl)
(setq make-backup-files nil)
;; Hide the fucking square in the center of screen
(setq ring-bell-function 'ignore)
; alchemist conf
(require 'elixir-mode)
(require 'alchemist)
;; (setq alchemist-mix-command "/usr/local/bin/mix")
;; (setq alchemist-execute-command "/usr/local/bin/elixir")
;; (setq alchemist-compile-command "/usr/local/bin/elixirc")
(setq alchemist-mix-env "dev")
(defun my-alchemist-config()
(local-set-key (kbd "C-c C-t") 'alchemist-mix-test-this-buffer))
(add-hook 'alchemist-mode-hook 'my-alchemist-config)
;; org conf
;; Load twitter bootstrap styles
(eval-after-load "org"
'(require 'ox-twbs nil t))
;; (require 'ox-reveal)
;; (defun my-org-config ()
;; (interactive)
;; (setq org-reveal-root "file:///Users/erick/Code/org/reveal.js/"))
;; (add-hook 'org-mode-hook 'my-org-config)
;; (require 'ox-reveal)
;; load languages for org mode snippets
(org-babel-do-load-languages
'org-babel-load-languages
'((python . t)
(ruby . t)
(sh . t)
(lisp . t)
(emacs-lisp . t)))
;; Use emacs web browser with Dash dockets
(setq helm-dash-browser-func 'eww)
;; Consider _ as part of work like vim do
(modify-syntax-entry ?_ "w")
;; go to file
(require 's)
(defun django-find-template ()
(interactive)
(save-excursion
(let ((beg (+ (search-backward-regexp "['\"]") 1))
(end nil)
(file nil))
(forward-char)
(search-forward-regexp "['\"]")
(setq end (- (point) 1))
(kill-ring-save beg end)
(setq file (current-kill 0))
(find-file (expand-file-name
(dolist (f (projectile-current-project-files))
(if (s-contains? file f)
(return f))) (projectile-project-root))))))
;; (define-key django-manage-map (kbd "C-x j") 'django-find-template)
;; toggle non english characters
(require 's)
(defun toggle-spanish-characters()
(interactive)
(if (eq ns-alternate-modifier 'meta)
(setq ns-alternate-modifier nil)
(setq ns-alternate-modifier 'meta)))
;; IRC conf
(require 'erc)
(erc-autojoin-mode t)
(setq erc-autojoin-channels-alist '((".*freenode.net" "#pyar" "#django-es" "emacs-es")))
(setq erc-server "irc.freenode.net")
(setq erc-nick "erickgnavar")
(setq erc-hide-list '("JOIN" "PART" "QUIT" "NICK"))
(setq erc-fill-function 'erc-fill-static)
(setq erc-fill-static-center 22)
;; support for images
(require 'erc-image)
(add-to-list 'erc-modules 'image)
(erc-update-modules)
;; Manage text size
;; (global-set-key (kbd "M-=") 'text-scale-increase)
;; (global-set-key (kbd "M-\-") 'text-scale-decrease)
(defalias 'yes-or-no-p 'y-or-n-p)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment