Skip to content

Instantly share code, notes, and snippets.

@kran
Last active December 20, 2015 11:19
Show Gist options
  • Save kran/6121967 to your computer and use it in GitHub Desktop.
Save kran/6121967 to your computer and use it in GitHub Desktop.
emacs
(byte-recompile-directory (expand-file-name "~/.emacs.d") 0)
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/") t)
(add-to-list 'load-path "~/.emacs.d")
(add-to-list 'load-path "~/.emacs.d/libs")
(package-initialize)
(require 'auto-complete-config)
(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(ac-config-default)
(when (not package-archive-contents)
(package-refresh-contents))
;; Add in your own as you wish:
(defvar my-packages '(evil hl-sexp paredit textmate)
"A list of packages to ensure are installed at launch.")
(dolist (p my-packages)
(when (not (package-installed-p p))
(package-install p)))
;;;;;;;;
;;;Misc
;;;;;;;;
(defalias 'yes-or-no-p 'y-or-n-p)
(setq evil-want-C-u-scroll t) ;should before require 'evil
(mapc 'require '(ido uniquify evil autopair flymake surround php-mode web-mode sr-speedbar ido-vertical-mode perspective heroku-theme))
(autoload 'indent-hint-lisp "indent-hint.el" "" t nil)
(setq uniquify-buffer-name-style 'forward)
(set-face-attribute 'default nil :font "Andale Mono 9")
; (set-face-foreground 'paren-face "DimGray")
;; modes
(mapc (lambda (mode) (funcall mode 1))
'(evil-mode ido-mode ido-ubiquitous-mode global-linum-mode
autopair-global-mode show-paren-mode
persp-mode textmate-mode global-surround-mode))
(dolist (mode '(tool-bar-mode scroll-bar-mode))
(when (fboundp mode) (funcall mode -1)))
;; smex
(setq smex-save-file (concat user-emacs-directory ".smex-items"))
(smex-initialize)
(global-set-key (kbd "M-x") 'smex)
;; ido-mode
(setq ido-enable-prefix nil
flymake-no-changes-timeout 3
ido-enable-flex-matching t
ido-auto-merge-work-directories-length nil
ido-create-new-buffer 'always
ido-use-filename-at-point 'guess
ido-use-virtual-buffers t
ido-handle-duplicate-virtual-buffers 2
ido-max-prospects 10)
;;(load-theme heroku t)
;; variables
(when window-system
(setq frame-title-format '(buffer-file-name "%f" ("%b")))
(tooltip-mode -1)
(mouse-wheel-mode t)
(blink-cursor-mode -1))
(setq inhibit-startup-message t
color-theme-is-global t
sentence-end-double-space nil
evil-default-cursor t
ido-enable-flex-matching t
visible-bell nil
tool-bar-mode nil
ring-bell-function 'ignore)
(if (eq system-type 'darwin)
(setq mac-command-modifier 'meta))
;; key bindings
(defun comment-or-uncomment-region-or-line ()
"Comments or uncomments the region or the current line if there's no active region."
(interactive)
(let (beg end)
(if (region-active-p)
(setq beg (region-beginning) end (region-end))
(setq beg (line-beginning-position) end (line-end-position)))
(comment-or-uncomment-region beg end)
(next-line)))
(defun define-evil-keys-for-state (state binds)
(dolist (b binds)
(define-key state (kbd (car b)) (cadr b))))
(define-evil-keys-for-state evil-normal-state-map
'(("C-l" windmove-right)
("C-h" windmove-left)
("C-j" windmove-down)
("C-k" windmove-up)
("M-j" persp-next)
("M-k" persp-prev)
("C-c C-c" comment-or-uncomment-region-or-line)
))
(define-evil-keys-for-state evil-insert-state-map
'(("C-d" delete-char)
("C-h" delete-backward-char)
("C-j" next-line)
("C-k" previous-line)
("C-e" end-of-line)
("C-M-n" emmet-expand-yas)
("C-n" emmet-expand-line)
("C-c C-c" comment-or-uncomment-region-or-line)
("M-j" persp-next)
("M-k" persp-prev)
("C-a" beginning-of-line-text)
))
(defun set-global-keys (binds)
(dolist (b binds)
(global-set-key (kbd (car b)) (cadr b))))
(defun switch-to-previous-buffer ()
(interactive)
(switch-to-buffer (other-buffer (current-buffer) 1)))
(defun sd/ido-define-keys ()
(define-key ido-completion-map (kbd "C-j") 'ido-next-match)
(define-key ido-completion-map (kbd "C-k") 'ido-prev-match))
(add-hook 'ido-setup-hook 'sd/ido-define-keys)
;; global bindings
(set-global-keys
'(("C-c b" switch-to-previous-buffer)
("C-c p" textmate-goto-file)
("C-c i" textmate-goto-symbol)
("C-c m" shell)
("C-8" ido-switch-buffer)
("C-0" evil-window-next)
("C-9" persp-switch)
("C-c o" ido-switch-buffer)
))
(evil-define-command cofj/maybe-exit ()
:repeat change
(interactive)
(let ((modified (buffer-modified-p)))
(insert "j")
(let ((evt (read-event (format "Insert %c to exit insert state" ?k)
nil 0.5)))
(cond
((null evt) (message ""))
((and (integerp evt) (char-equal evt ?k))
(delete-char -1)
(set-buffer-modified-p modified)
(push 'escape unread-command-events))
(t (setq unread-command-events (append unread-command-events
(list evt))))))))
(define-key evil-insert-state-map "j" 'cofj/maybe-exit)
;;;;;;;;;;;;
;;show paren off screen
;;;;;;;;;;;;
(defadvice show-paren-function
(after show-matching-paren-offscreen activate)
"If the matching paren is offscreen, show the matching line in the
echo area. Has no effect if the character before point is not of
the syntax class ')'."
(interactive)
(let* ((cb (char-before (point)))
(matching-text (and cb
(char-equal (char-syntax cb) ?\) )
(blink-matching-open))))
(when matching-text (message matching-text))))
;;;;;;;;;;;;
;; Scheme
;;;;;;;;;;;;
(require 'cmuscheme)
(setq scheme-program-name "csi")
;; bypass the interactive question and start the default interpreter
(defun scheme-proc ()
"Return the current Scheme process, starting one if necessary."
(unless (and scheme-buffer
(get-buffer scheme-buffer)
(comint-check-proc scheme-buffer))
(save-window-excursion
(run-scheme scheme-program-name)))
(or (scheme-get-process)
(error "No current process. See variable `scheme-buffer'")))
(defun scheme-split-window ()
(cond
((= 1 (count-windows))
(delete-other-windows)
(split-window-vertically (floor (* 0.68 (window-height))))
(other-window 1)
(switch-to-buffer "*scheme*")
(other-window 1))
((not (find "*scheme*"
(mapcar (lambda (w) (buffer-name (window-buffer w)))
(window-list))
:test 'equal))
(other-window 1)
(switch-to-buffer "*scheme*")
(other-window -1))))
(defun scheme-send-last-sexp-split-window ()
(interactive)
(scheme-split-window)
(scheme-send-last-sexp))
(defun scheme-send-definition-split-window ()
(interactive)
(scheme-split-window)
(scheme-send-definition))
(add-hook 'scheme-mode-hook
(lambda ()
(paredit-mode 1)
(hl-sexp-mode 1)
(hl-line-mode -1)
(autopair-mode -1)
(define-key scheme-mode-map (kbd "<f9>") 'scheme-send-last-sexp-split-window)
(define-key scheme-mode-map (kbd "<f10>") 'scheme-send-definition-split-window)))
;; tab!!!!
(setq-default tab-width 4)
(setq-default indent-tabs-mode nil)
(setq-default default-tab-width 4)
(setq-default c-basic-offset 4)
(setq tab-width 4)
(setq tab-stop-list ())
(loop for x downfrom 40 to 1 do
(setq tab-stop-list (cons (* x 4) tab-stop-list)))
;; hooks
(defun esk-turn-on-hl-line-mode ()
(when (> (display-color-cells) 8)
(hl-line-mode t)))
(add-hook 'prog-mode-hook 'esk-turn-on-hl-line-mode)
;; (add-hook 'prog-mode-hook 'esk-pretty-lambdas)
(add-hook 'prog-mode-hook 'idle-highlight-mode)
;; WEB-MODE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; (remove-hook 'prog-mode-hook 'esk-turn-on-hl-line-mode)
(add-to-list 'auto-mode-alist '("views/.*\\.php\\'" . web-mode))
(add-hook 'web-mode-hook (lambda ()
(idle-highlight-mode -1)
(when (and (stringp buffer-file-name) (string-match "\\.php\\'" buffer-file-name))
(flymake-mode 1))
))
(add-hook 'php-mode-hook (lambda () (flymake-mode 1)))
;; FLYMAKE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(custom-set-variables
;; custom-set-variables 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.
'(custom-safe-themes (quote ("96efbabfb6516f7375cdf85e7781fe7b7249b6e8114676d65337a1ffe78b78d9" "1e7e097ec8cb1f8c3a912d7e1e0331caeed49fef6cff220be63bd2a6ba4cc365" default)))
'(display-time-mode 0)
;; '(php-manual-path "/home/kran/Documents/php-doc/")
'(speedbar-show-unknown-files t)
'(speedbar-update-flag nil)
'(speedbar-use-images nil)
'(speedbar-verbosity-level 0)
'(sr-speedbar-auto-refresh nil)
'(sr-speedbar-right-side nil)
'(tool-bar-mode nil)
'(tool-bar-position (quote right))
'(truncate-lines nil))
(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.
'(flymake-errline ((t nil)))
'(flymake-warnline ((t nil))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment