LoginSignup
3
5

More than 5 years have passed since last update.

Emacs設定

Last updated at Posted at 2016-05-26

init_loaderを使って設定毎にファイルを分ける方針

init.el

(let ((default-directory (expand-file-name "~/.emacs.d/site-lisp")))
  (add-to-list 'load-path default-directory)
  (if (fboundp 'normal-top-level-add-subdirs-to-load-path)
      (normal-top-level-add-subdirs-to-load-path)))

(require 'init-loader)
(setq init-loader-show-log-after-init nil)
(init-loader-load "~/.emacs.d/inits")

00-base.el

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;Basic config
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;BS->backspace
(keyboard-translate ?\C-h ?\C-?)

;;don't show menu-bar
(menu-bar-mode -1)

;;Auto Save off
(setq auto-save-default nil)
(setq auto-save-list-file-name nil)
(setq auto-save-list-file-prefix nil)
(setq make-backup-files nil)

;;Display column number
(column-number-mode 1)

;;hilight paren
(show-paren-mode 1)

;;indent
(setq-default tab-width 4 indent-tabs-mode nil)

;;C-x p move windows reverce
(global-set-key "\C-xp" (lambda () (interactive) (other-window -1)))

;;add execute authority
(add-hook 'after-save-hook
      'executable-make-buffer-file-executable-if-script-p)

;;Display file path at mode-line
(set-default 'mode-line-buffer-identification
         '(buffer-file-name ("%f") ("%b")))

;;scroll number
(setq scroll-step 1)

;;ido-mode
(require 'ido)
(ido-mode t)

;;record last place
(require 'saveplace)
(setq-default save-place t)

;;enable ungry deletion
(setq c-hungry-delete-key t)

;;display
(require 'uniquify)
(setq uniquify-buffer-name-style 'post-forward-angle-brackets)

01-keybinds.el

;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;keybind
;;;;;;;;;;;;;;;;;;;;;;;;;;;

(global-unset-key "\C-\\")

(global-set-key "\C-m" 'newline-and-indent)
(global-set-key "\C-c\C-c" 'comment-dwim)
(global-set-key "\C-j" 'newline)

(global-set-key "\C-c\C-g" 'grep)
(global-set-key "\C-c\C-f" 'find-grep)
(global-set-key "\C-c\C-l" 'goto-line)

(global-set-key "\C-c\C-v" 'set-mark-command)

(global-set-key "\C-c\C-e" 'execute-extended-command)

;;hexl-mode
(defun hexl-mode-hooks ()
  (define-key hexl-mode-map (kbd "C-c i") 'hexl-insert-hex-string))

(add-hook 'hexl-mode-hook 'hexl-mode-hooks)

04-package.el

起動時にパッケージがインストールされていない場合自動的にインストールする。
インストールしたいパッケージは、installing-package-list 変数で定義

応用としては Ruby 用の el ファイルでインストールしたいパッケージを変数で定義して install-package 関数を呼ぶと Ruby で必要なパッケージを起動時にインストールしたりも可能
が、起動時にパッケージをチェックするので起動が遅くなっている気がする

;;package.el
(require 'package)
(setq package-archives '(("gnu" . "http://elpa.gnu.org/packages/")
                         ("marmalade" . "http://marmalade-repo.org/packages/")
                         ("melpa" . "https://melpa.milkbox.net/packages/")))

;; proxy setting
(setq url-proxy-service
      '(("http" . "*****:8080")
        ("https" . "****:8080")))

;; basic package list
(defvar package-list '(multi-term
                                  auto-complete
                                  helm
                                  helm-gtags))

(package-initialize)

;; install basic package
(require 'cl)
(defun install-package (pacakage-list)
  (let ((not-installed (loop for x in package-list
                             when (not (package-installed-p x))
                             collect x)))
    (when not-installed
      (package-refresh-contents)
      (dolist (pkg not-installed)
        (package-install pkg)))))



;; install package
(install-package package-list)

05-helm.el

;; helm
(require 'helm-config)
(require 'helm-gtags)
(helm-mode 1)

(global-set-key "\C-xb" 'helm-for-files)
(global-set-key "\M-y" 'helm-show-kill-ring)

05-multi-term.el

色々試したけど、multi-term が一番しっくりきたので

(require 'multi-term)

(defun toggle-term-mode()
  "Toggles term mode(line <--> char)"
  (interactive)
  (if (term-in-line-mode)
      (term-char-mode)
    (term-line-mode)))

(setq multi-term-program shell-file-name)

(global-set-key "\C-c\C-t" 'multi-term)

;; keybinds for multi-term
(defun term-mode-hooks ()
  ;term-char
  (define-key term-raw-map (kbd "C-c C-p") 'multi-term-prev)
  (define-key term-raw-map (kbd "C-c C-n") 'multi-term-next)
  (define-key term-raw-map (kbd "C-c C-j") 'toggle-term-mode)

  (define-key term-raw-map (kbd "C-p") 'term-send-up)
  (define-key term-raw-map (kbd "C-n") 'term-send-down)

  ;term-line
  (define-key term-mode-map (kbd "C-c C-p") 'multi-term-prev)
  (define-key term-mode-map (kbd "C-c C-n") 'multi-term-next)
  (define-key term-mode-map (kbd "C-c C-j") 'toggle-term-mode))

(add-hook 'term-mode-hook 'term-mode-hooks)

だれか、コメント、アンコメントを切り替えられる設定教えてください。(comment-region と uncomment-region を C-c C-m で切り替えるようなもの、、)

3
5
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5