Skip to content

Instantly share code, notes, and snippets.

@mopemope
Created October 15, 2013 13:05
Show Gist options
  • Select an option

  • Save mopemope/6991268 to your computer and use it in GitHub Desktop.

Select an option

Save mopemope/6991268 to your computer and use it in GitHub Desktop.
emacs init.el
;; package
(require 'package)
(add-to-list 'package-archives
'("marmalade" . "http://marmalade-repo.org/packages/"))
(add-to-list 'package-archives
'("melpa" . "http://melpa.milkbox.net/packages/") t)
(package-initialize)
(unless (file-exists-p package-user-dir)
(package-refresh-contents))
(defun install-packages (pkgs)
(dolist (p pkgs)
(when (not (package-installed-p p))
(package-install p))))
;; basic
(defvar basic-packages '(auto-complete
ace-jump-mode
shell-pop
auto-indent-mode
color-theme
color-theme-molokai
company
erlang
emacs-eclim
fuzzy
helm
helm-ag
helm-c-moccur
helm-descbinds
helm-gtags
smex
magit
markdown-mode
ssh
starter-kit
starter-kit-bindings
starter-kit-eshell
yasnippet))
;; html, javascript
(defvar js-packages '(js2-mode
web-mode
ac-emmet
emmet-mode
))
;; php
(defvar php-packages '(php-mode
php-extras
))
;; python
(defvar python-packages '(python-mode
python-pep8
python-pylint
virtualenv
tox
))
;; go
(defvar go-packages '(go-mode
go-snippets
))
;; clojure
(defvar clojure-packages '(starter-kit-lisp
clojure-mode
clojure-test-mode
clojure-project-mode
clojure-cheatsheet
clojure-snippets
clojurescript-mode
nrepl
paredit
midje-mode
rainbow-delimiters
))
;; common lisp
(defvar cl-packages '(starter-kit-lisp
slime
popwin
ac-slime
))
;; install packages
(install-packages basic-packages)
(install-packages python-packages)
(install-packages php-packages)
(install-packages go-packages)
(install-packages js-packages)
(install-packages clojure-packages)
(install-packages cl-packages)
;; global settings
(if window-system (server-start))
(set-default-font "Inconsolata 11")
(setq linum-format "%4d ")
(global-linum-mode t)
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
;; load mozc
(load-file "~/.emacs.d/elpa/mozc.el")
(setq default-input-method "japanese-mozc")
(column-number-mode 1)
(global-set-key "\C-x\C-b" 'bs-show)
(cua-mode t)
(setq cua-enable-cua-keys nil)
;; Tabの代わりにスペースでインデント
(setq-default indent-tabs-mode nil)
(setq-default tab-width 4 indent-tabs-mode nil)
;;; シンボリックリンクの読み込みを許可
(setq vc-follow-symlinks t)
;;; シンボリックリンク先のVCS内で更新が入った場合にバッファを自動更新
(setq auto-revert-check-vc-info t)
;;; スタートアップスクリーンを表示しない
(setq inhibit-splash-screen t)
;;; iswitchb-mode
(setq iswitchb-mode t)
;;; バックアップファイルの設定
(setq make-backup-files t)
(setq backup-directory-alist
(cons (cons "\\.*$" (expand-file-name "~/.emacs_backup"))
backup-directory-alist))
(defvar my-auto-save-folder "~/.emacs.d/auto-save")
(setq auto-save-list-file-prefix "~/.emacs.d/auto-save/.saves-")
(setq auto-save-file-name-transforms `((".*" ,my-auto-save-folder t)))
(setq tramp-auto-save-directory my-auto-save-folder)
(setq backup-directory-alist
(cons (cons "\\.*$" (expand-file-name "~/.emacs_backup"))
backup-directory-alist))
(setq kept-new-versions 5)
(setq kept-old-versions 5)
(setq delete-old-versions t)
;;リージョンに色をつける
(transient-mark-mode t)
;;リージョンを[delete][BS]で削除
(delete-selection-mode t)
(setq redisplay-dont-pause t)
;; linum delay
(setq linum-delay t)
(defadvice linum-schedule (around my-linum-schedule () activate)
(run-with-idle-timer 0.2 nil #'linum-update-current))
;; 全角スペース タブ trailing-spacesを目立たせる
(require 'whitespace)
;; space-markとtab-mark、それからspacesとtrailingを対象とする
(setq whitespace-style '(space-mark tab-mark face spaces trailing))
(setq whitespace-display-mappings
'(
;; (space-mark ?\ [?\u00B7] [?.]) ; space - centered dot
(space-mark ?\xA0 [?\u00A4] [?_]) ; hard space - currency
(space-mark ?\x8A0 [?\x8A4] [?_]) ; hard space - currency
(space-mark ?\x920 [?\x924] [?_]) ; hard space - currency
(space-mark ?\xE20 [?\xE24] [?_]) ; hard space - currency
(space-mark ?\xF20 [?\xF24] [?_]) ; hard space - currency
(space-mark ?\u3000 [?\u25a1] [?_ ?_]) ; full-width-space - square
;; NEWLINE is displayed using the face `whitespace-newline'
;; (newline-mark ?\n [?$ ?\n]) ; eol - dollar sign
;; (newline-mark ?\n [?\u21B5 ?\n] [?$ ?\n]) ; eol - downwards arrow
;; (newline-mark ?\n [?\u00B6 ?\n] [?$ ?\n]) ; eol - pilcrow
;; (newline-mark ?\n [?\x8AF ?\n] [?$ ?\n]) ; eol - overscore
;; (newline-mark ?\n [?\x8AC ?\n] [?$ ?\n]) ; eol - negation
;; (newline-mark ?\n [?\x8B0 ?\n] [?$ ?\n]) ; eol - grade
;;
;; WARNING: the mapping below has a problem.
;; When a TAB occupies exactly one column, it will display the
;; character ?\xBB at that column followed by a TAB which goes to
;; the next TAB column.
;; If this is a problem for you, please, comment the line below.
(tab-mark ?\t [?\u00BB ?\t] [?\\ ?\t]) ; tab - left quote mark
))
;; whitespace-spaceの定義を全角スペースにし、色をつけて目立たせる
(setq whitespace-space-regexp "\\(\u3000+\\)")
(set-face-foreground 'whitespace-space "cyan")
(set-face-background 'whitespace-space 'nil)
;; whitespace-trailingを色つきアンダーラインで目立たせる
(set-face-underline 'whitespace-trailing t)
(set-face-foreground 'whitespace-trailing "cyan")
(set-face-background 'whitespace-trailing 'nil)
(global-whitespace-mode t)
;;対応する括弧に@で移動
;; (global-set-key "@" 'match-paren)
;; (defun match-paren (arg)
;; "Go to the matching paren if on a paren; otherwise insert %."
;; (interactive "p")
;; (cond ((looking-at "\\s\(") (forward-list 1) (backward-char 1))
;; ((looking-at "\\s\)") (forward-char 1) (backward-list 1))
;; (t (self-insert-command (or arg 1)))))
;;;タイトルバーの表示
(setq frame-title-format "%b")
(menu-bar-mode -1)
;;;右端で折り返さない
(setq truncate-lines t)
(setq truncate-partial-width-windows nil)
;;;1行丸ごとカット
(setq kill-whole-line t)
(defun beginning-of-indented-line (current-point)
"インデント文字を飛ばした行頭に戻る。ただし、ポイントから行頭までの間にインデント文字しかない場合は、行頭に戻る。"
(interactive "d")
(if (string-match
"^[ \t]+$"
(save-excursion
(buffer-substring-no-properties
(progn (beginning-of-line) (point))
current-point)))
(beginning-of-line)
(back-to-indentation)))
(defun beginning-of-visual-indented-line (current-point)
"インデント文字を飛ばした行頭に戻る。ただし、ポイントから行頭までの間にインデント文 字しかない場合は、行頭に戻る。"
(interactive "d")
(let ((vhead-pos (save-excursion (progn (beginning-of-visual-line) (point))))
(head-pos (save-excursion (progn (beginning-of-line) (point)))))
(cond
;; 物理行の1行目にいる場合
((eq vhead-pos head-pos)
(if (string-match
"^[ \t]+$"
(buffer-substring-no-properties vhead-pos current-point))
(beginning-of-visual-line)
(back-to-indentation)))
;; 物理行の2行目以降の先頭にいる場合
((eq vhead-pos current-point)
(backward-char)
(beginning-of-visual-indented-line (point)))
;; 物理行の2行目以降の途中にいる場合
(t (beginning-of-visual-line)))))
(global-set-key "\C-a" 'beginning-of-visual-indented-line)
(global-set-key "\C-e" 'end-of-visual-line)
;; package settings
(setq org-src-fontify-natively t)
;; yasnippet
(require 'yasnippet)
(yas-global-mode 1)
;; helm-mode
(require 'helm-config)
(helm-descbinds-mode)
(helm-mode t)
;; C-x b で helm-for-files
(define-key global-map (kbd "C-x b") 'helm-for-files)
;; eclim
(require 'eclim)
(require 'eclimd)
(global-eclim-mode)
(custom-set-variables
'(eclim-eclipse-dirs '("~/opt/eclipse")))
;; regular auto-complete initialization
(require 'auto-complete-config)
(ac-config-default)
;; add the emacs-eclim source
(require 'ac-emacs-eclim-source)
(ac-emacs-eclim-config)
;; (require 'company)
;; (require 'company-emacs-eclim)
;; (company-emacs-eclim-setup)
;; (global-company-mode t)
;; boot j2ee server
(defvar jdk-home "/usr/lib/jvm/java-7-openjdk-amd64")
(defvar catalina-home "/home/ma2/opt/server/tomcat7")
(defun create-tomcat-param (tomcat-home)
(mapconcat (lambda (x)
(format x tomcat-home))
'("-Dcatalina.home=%s" "-Djava.endorsed.dirs=%s/endorsed")
" "))
(defun create-tomcat-classpath (tomcat-home java-home)
(concat "-classpath "
(mapconcat (lambda (x)
(format x tomcat-home))
(list
"%s/bin/bootstrap.jar"
"%s/bin/tomcat-juli.jar"
(format "%s/lib/tools.jar" java-home))
":" )))
(defun create-wst-param (workspace)
(mapconcat (lambda (x)
(format x workspace))
'("-Dcatalina.base=%s/.metadata/.plugins/org.eclipse.wst.server.core/tmp0"
"-Dwtp.deploy=%s/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps")
" "))
(defun create-tomcat-start-cmd (workspace tomcat-home java-home)
(mapconcat #'identity
(list
(create-tomcat-param tomcat-home)
(create-wst-param workspace)
(create-tomcat-classpath tomcat-home java-home)
"org.apache.catalina.startup.Bootstrap"
"start")
" "))
(defun start-j2ee-server ()
(interactive)
(setq w (selected-window))
(setq w2 (split-window w (- (window-height w) 20)))
(select-window w2)
(start-process-shell-command
"j2ee-server"
"*server-console*"
"java"
(create-tomcat-start-cmd (eclim/workspace-dir) catalina-home jdk-home))
(switch-to-buffer "*server-console*"))
(defun stop-j2ee-server ()
(interactive)
(interrupt-process "j2ee-server"))
(defun eclim-run-junit ()
(interactive)
(if (not (string= major-mode "java-mode"))
(message "Sorry cannot run current buffer."))
(compile (concat eclim-executable " -command java_junit -p " eclim--project-name " -t " (eclim-package-and-class))))
(setq ispell-program-name "aspell")
;; use ace-jump-mode
(require 'ace-jump-mode)
(global-set-key (kbd "C-c SPC") 'ace-jump-mode)
(require 'color-theme)
;;(color-theme-initialize)
(color-theme-molokai)
(require 'auto-complete-config)
(global-auto-complete-mode t)
(ac-config-default)
(setq ac-auto-start 2) ;; n文字以上の単語の時に補完を開始
(setq ac-delay 0.05) ;; n秒後に補完開始
(setq ac-use-fuzzy t) ;; 曖昧マッチ有効
(setq ac-use-comphist t) ;; 補完推測機能有効
(setq ac-auto-show-menu 0.05) ;; n秒後に補完メニューを表示
(setq ac-quick-help-delay 0.5) ;; n秒後にクイックヘルプを表示
(setq ac-ignore-case nil) ;; 大文字・小文字を区別する
(setq ac-use-menu-map t)
;; shell-pop
(require 'shell-pop)
(setq shell-pop-set-internal-mode "ansi-term")
(setq shell-pop-set-internal-mode-shell "/bin/bash")
(defvar ansi-term-after-hook nil)
(add-hook 'ansi-term-after-hook
(function
(lambda ()
(define-key term-raw-map "\C-t" 'shell-pop))))
(defadvice ansi-term (after ansi-term-after-advice (arg))
"run hook as after advice"
(run-hooks 'ansi-term-after-hook))
(ad-activate 'ansi-term)
(global-set-key "\C-t" 'shell-pop)
(require 'rainbow-delimiters)
(defun clojure-hook ()
(paredit-mode t)
(rainbow-delimiters-mode t))
(add-hook 'clojure-mode-hook 'clojure-hook)
(add-hook 'nrepl-mode-hook 'clojure-hook)
(add-hook 'prog-mode-hook 'rainbow-delimiters-mode)
;; slime
(require 'slime)
(setq inferior-lisp-program "sbcl")
(slime-setup)
(defun cl-hook ()
(slime-mode t)
(inferior-slime-mode t)
(auto-complete-mode t))
(add-hook 'lisp-mode-hook 'cl-hook)
(add-hook 'inferior-lisp-mode-hook 'cl-hook)
(require 'ac-slime)
(setq ac-sources '(ac-source-slime-simple ac-source-words-in-same-mode-buffers))
(add-hook 'slime-mode-hook 'set-up-slime-ac)
(add-hook 'slime-repl-mode-hook 'set-up-slime-ac)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment