Help us understand the problem. What is going on with this article?

Windows での Emacs の設定覚書

More than 5 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が適用される)
ignorant
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした