yetnoneの日記

どこぞのPh.D. student。何をやっているかと聞かれると困る。

新しい環境での個人的Emacs最低限環境の構築手順

このご時世にまだEmacsを使っているのかとは自分でもたまに思うが、変化を迫る決定的な要因がないから惰性で使い続けてる。

まず、以下を~/.emacs.d/init.elに記述。

(custom-set-faces
 '(default ((t (:background "black" :foreground "#55FF55"))))
 '(cursor ((((class color) (background dark)) (:background "#00AA00")) (((class color) (background light)) (:background "#999999")) (t nil))))

(setq inhibit-startup-message t)
(setq make-backup-files nil)
(setq auto-save-default nil)
(setq auto-save-list-file-name nil)
(setq auto-save-list-file-prefix nil)
(show-paren-mode 1)
(set-face-background 'show-paren-match-face "grey")
(set-face-foreground 'show-paren-match-face "black")
(setq cursor-in-non-selected-windows nil)
(global-font-lock-mode t)
(column-number-mode t)
(line-number-mode t)
(setq fill-column 80)
(setq-default auto-fill-mode t)
(setq tab-width 4)
(setq scroll-step 1)
(setq backup-inhibited t)

;; c mode
(add-hook 'c-mode-common-hook
          '(lambda ()
             (c-set-style "k&r")
             (setq c-basic-offset 4)
             (setq indent-tabs-mode 4)
             (setq tab-width 4)))

次はMELPA。Emacs 24以降じゃないと追加でなんかしないといけないはず。Emacs 24以降であれば以下をinit.elに追記。

;; melpa
(require 'package)
(let* ((no-ssl (and (memq system-type '(windows-nt ms-dos))
                    (not (gnutls-available-p))))
       (url (concat (if no-ssl "http" "https") "://melpa.org/packages/")))
  (add-to-list 'package-archives (cons "melpa" url) t))
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "https://elpa.gnu.org/packages/")))
(package-initialize)

MELPAはM-x package-list-packagesでパッケージを探してM-x package-install RET <package_name>でインストール(リストの状態からもIとXでインストールできるが個人的になぜかこっちを好んでいる)。

そしてMELPAを使ってauto-completeパッケージをインストール。その後init.elに以下を追記。

;; auto-complete
(require 'auto-complete)
(require 'auto-complete-config)
(global-auto-complete-mode t)
(define-key ac-complete-mode-map "\C-n" 'ac-next)
(define-key ac-complete-mode-map "\C-p" 'ac-previous)

同じくMELPAでflycheckパッケージをインストール。その後init.elに以下を追記。

;; flycheck
(add-hook 'after-init-hook #'global-flycheck-mode)
(define-key global-map (kbd "\C-cn") 'flycheck-next-error)
(define-key global-map (kbd "\C-cp") 'flycheck-previous-error)
(define-key global-map (kbd "\C-cd") 'flycheck-list-errors)

これで最低限の補完とシンタックスチェックが可能。

init.elの最後を以下で締める。

(provide 'init)
;;; init.el ends here

TODO

  • ac-dict for auto-complete?
  • jedi?