Windows での Emacs の設定覚書

More than 3 years have passed since last update.


Emacs の設定

取り敢えず %HOME% にディレクトリ(フォルダ) .emacs.d を作成して,その下にconf,elisp,etc などを作成する.

init.elconf 以下の個別の設定を呼び出すことにする.オールドタイプなので package.elinit-loader.el は使わないです.:expressionless:

また,Emacs のインストール先を D:\Programs\emacs にしています.

~/.emacs.d/init.el に下記内容で作成する.個別の設定は,~/.emacs.d/conf/init-xxx.el に記述して,load で呼び出す.

設定はいろいろな所を参考にさせて貰いましたが,出典が分からないのが多数です. >_<;


init.el

;; -*- Mode: Emacs-Lisp ;  Coding: utf-8 -*-

;; load-pathを追加する関数
(defun add-to-load-path (&rest paths)
(let (path)
(dolist (path paths paths)
(let ((default-directory
(expand-file-name (concat user-emacs-directory path))))
(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))))))

;; 引数のディレクトリ以下をload-pathに追加
(add-to-load-path "elisp" "conf")

;; use-package を require の代わりに使う
(if (require 'use-package nil t)
(setq use-package-verbose t)
(message "Use-package is unavailable!")
(defmacro use-package (&rest _args)))

;; 個別設定をロードする
(load "init-global")
(load "init-utility")
(load "init-xxx")



共通の設定

共通の設定を init-global.el に記述する.忘れそうなのだけメモします.


init-global.el

;; 日本語環境

(set-language-environment "Japanese")
(prefer-coding-system 'utf-8)
(set-file-name-coding-system 'cp932)
(set-keyboard-coding-system 'cp932)
(set-terminal-coding-system 'cp932)

;; Proxy の設定
(setq url-proxy-services '(("http" . "Proxy:Port")))

;; 起動時のディレクトリの変更
(setq default-directory "~/")

;; C-h を Backspace に
(keyboard-translate ?\C-h ?\C-?)

;; *scratch* バッファを削除しない
(defadvice kill-buffer (around kill-buffer-around-advice activate)
(let ((buffer-to-kill (ad-get-arg 0)))
(if (equal buffer-to-kill "*scratch*")
(bury-buffer)
ad-do-it)))

;; server start for emacs-client
(use-package server
:if window-system
:init
(unless (server-running-p)
(server-start)))



C/Migemo

KaoriYa さんから,「C/Migemo for Windows 64bit」をダウンロードする.

解凍して出てきて cmigemo.dll,cmigemo.exeD:\Programs\emacs\libexec\emacs\24.4\x86_64-pc-mingw32 にコピーする. 辞書ファイルを ~/.emacs.d/etc/dict/migemo にコピーする.


init-migemo.el

;; -*- Mode: Emacs-Lisp ;  Coding: utf-8 -*-

(use-package migemo
:config
(setq migemo-command "cmigemo")
(setq migemo-options '("-q" "--emacs" "-i" "\a"))
(setq migemo-dictionary (expand-file-name "~/.emacs.d/etc/dict/migemo/utf-8/migemo-dict"))
(setq migemo-user-dictionary nil)
(setq migemo-regex-dictionary nil)
(setq migemo-use-pattern-alist t)
(setq migemo-use-frequent-pattern-alist t)
(setq migemo-pattern-alist-length 1000)
(setq migemo-coding-system 'utf-8-unix)
(migemo-init))



The Silver Searcher(ag)

Msys2 Shell から Pacman -S mingw-w64-x86_64-ag でインストールする.

ag.exe,libwinpthread-1.dll,libpcre-1.dll,liblzma-5.dllD:\Programs\emacs\libexec\emacs\24.4\x86_64-pc-mingw32 にコピーする.

helm-ag~/.emacs.d/elisp/helm にインストールする.(helm のインストール先を~/.emacs.d/elisp/helm にしています)


init-helm.el

;; -*- Mode: Emacs-Lisp ;  Coding: utf-8 -*-

(use-package helm-config
:bind
("C-;" . helm-mini)
("C-x C-b" . helm-buffers-list)
:config
(use-package helm-files
:config
(define-key helm-find-files-map (kbd "TAB") 'helm-execute-persistent-action))
)

(use-package helm-ag
:bind
("M-s" . helm-ag)
)



Aspell

Msys2 Shell から Pacman -S mingw-w64-x86_64-aspell でインストールする.

aspell.exe,word-list-compress.exe,libaspell-15.dll,libstdc++-6.dll,libintl-8.dll,libgcc_s_seh-1.dll,libiconv-2.dllD:\Programs\emacs\libexec\emacs\24.4\x86_64-pc-mingw32にコピーする.

辞書ファイルがないので,GNU Aspell からインストールする.

MinGW-w64 Win64 Shell から実行する.

$ curl -O ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-2015.02.15-0.tar.bz2

$ tar jxvf aspell6-en-2015.02.15-0.tar.bz2
$ cd aspell6-en-2015.02.15-0
$ ./configure
$ vi Makefile
---
dictdir = D:\msys64\mingw64/lib/aspell-0.60
datadir = D:\msys64\mingw64/lib/aspell-0.60

dictdir = D:\\msys64\\mingw64/lib/aspell-0.60
datadir = D:\\msys64\\mingw64/lib/aspell-0.60
---
$ make
$ make isntall

D:\msys64\mingw64\lib\aspell-0.60D:\Programs\emacs\libexec\emacs\24.4\x86_64-pc-mingw32\lib\aspell-0.60にコピーする.

ispell-complete-word が動作しないので,wordsgrep.exe がないので調達する.UNIX 系の OS にある words ファイル(/usr/local/share/dict,/usr/share/dict にある?) を ~/.emacs.d/etc/dict/ にコピーする.

MSYS2grep.exe を使うと必要な DLL が増えるのでコンパイルしたものを使用する.

MinGW-w64 Win64 Shell から実行する.

$ curl -O http://ftp.gnu.org/gnu/grep/grep-2.21.tar.xz

$ tar Jxvf grep-2.21.tar.xz
$ cd grep-2.21
$ ./configure
$ make

src にできた grep.exeD:\Programs\emacs\libexec\emacs\24.4\x86_64-pc-mingw32 にコピーする.


init-utility.el

;; -*- Mode: Emacs-Lisp ;  Coding: utf-8 -*-

(use-package ispell
:init
(setq ispell-program-name "aspell")
:config
(setq ispell-alternate-dictionary (expand-file-name "~/.emacs.d/etc/dict/words"))
(add-to-list 'ispell-skip-region-alist '("[^\000-\377]+")))


~/.aspell.conf


aspell.conf

lang en_US


を追加する.


Markdown


Pandoc

(2015/4/14 Font Awesome の設定追加)

Pandoc から最新のバージョンをダウンロードしてインストールする.ここでは,pandoc-1.13.2-windows.msi をインストールししました.


Markdown-mode

markdown-mode~/.emacs.d/elisp にインストールする.

スタイルシートを適用する場合は,適当な CSS を用意する.ここでは,github.css を使うことにする.


init-markdown.el

;; -*- Mode: Emacs-Lisp ;  Coding: utf-8 -*-

(use-package markdown-mode
:mode
("\\.md\\'" . gfm-mode)
:config
(setq markdown-command "pandoc --smart -f markdown_github -t html5")
(setq markdown-css-path "path\\to\\github.css")
(setq markdown-xhtml-header-content "<link href=\"http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css\" rel=\"stylesheet\" />")
)




  • C-c C-c m : ソースの表示(buffer に表示される)


  • C-c C-c p : ブラウザで表示(temporary file で表示:CSSが適用されない)


  • C-c C-c v : ブラウザで表示(basename.htmlを生成して表示: CSSが適用される)