目次

拡張

はじめに

Emacsのバージョンがかわるたびに拡張入れ直すのめんどいので拡張入れるフォルダを作る

$ mkdir ~/site-lisp

.emacs.elに下のやつを書いてパスを通す

(setq load-path
      (append
       (list
       (expand-file-name "~/site-lisp/")
       )
       load-path))

nxhtml

Emacsのxhtmlな拡張。
Carbon Emacsにははじめから入っているので.emacs.elに設定を書くだけ

(load-library "autostart")
(custom-set-variables
 '(indent-region-mode t)
 '(nxhtml-global-minor-mode t)
 '(nxhtml-global-validation-header-mode t)
 '(nxhtml-skip-welcome t))
(custom-set-faces
 )

これでnxhtmlのスタートページっぽいやつもでなくなる

Carbon Emacsじゃない場合は

下のサイトからダウンロードして、site-lispに解凍。
nxhtml
でloadをちょっと変更

(load "nxml/autostart.el")
(custom-set-variables
 '(ecb-options-version "2.32")
 '(indent-region-mode t)
 '(nxhtml-global-minor-mode t)
 '(nxhtml-global-validation-header-mode t)
 '(nxhtml-skip-welcome t))
(custom-set-faces
 '(mumamo-background-chunk-major ((((class color) (min-colors 8)) (:background "*"))))
 '(mumamo-background-chunk-submode ((((class color) (min-colors 8)) (:background "*")))))
(add-hook 'nxml-mode-hook
          (lambda ()
            (setq auto-fill-mode -1)
            (setq nxml-slash-auto-complete-flag t)
            (setq nxml-child-indent 2)
            (setq indent-tabs-mode t)
            (setq tab-width 2)))

Ruby

Rubyのソースコードを解凍するとmiscディレクトリにemacs用の.elファイルが入っているのでそれをパスが通ったところに置く。

の6つ.

それとendに対応するブロックを教えてくれるruby-block.elもダウンロード.

;; ruby-mode.el
(autoload 'ruby-mode "ruby-mode"
  "Mode for editing ruby source files" t)
(setq auto-mode-alist
      (append '(("\\.rb$" . ruby-mode)) auto-mode-alist))
(setq interpreter-mode-alist (append '(("ruby" . ruby-mode))
                                     interpreter-mode-alist))
(autoload 'run-ruby "inf-ruby"
  "Run an inferior Ruby process")
(autoload 'inf-ruby-keys "inf-ruby"
  "Set local key defs for inf-ruby in ruby-mode")
(add-hook 'ruby-mode-hook
          '(lambda () (inf-ruby-keys)))
 
;; ruby-electric.el
(require 'ruby-electric)
(add-hook 'ruby-mode-hook '(lambda () (ruby-electric-mode t)))
 
;; rubydbnx.el
(autoload 'rubydb "rubydb2x"
  "run rubydb on program file in buffer *gud-file*.
the directory containing file becomes the initial working directory
and source-file directory for your debugger." t)
 
;; ruby-block.el
(require 'ruby-block)
(ruby-block-mode t)
(setq ruby-block-highlight-toggle t)

Rinari

Ruby on Rails用emacsの拡張 Rinari: Ruby on Rails Minor Mode for Emacs

詳しくはRinari: Ruby on Rails Minor Mode for EmacsおもしろWEBサービス開発日記さんのところに載っていますが、 めもとして。

コマンドはM-x describe-bindingsで一覧がでてきます。

まず基本インストール.
gitをつかいます。

$ cd ~/path/to
$ git clone git://github.com/eschulte/rinari.git
$ cd rinari
$ git submodule init
$ git submodule update

そして.emacs.elに

;; Interactively Do Things (highly recommended, but not strictly required)
(require 'ido)
(ido-mode t)
 
;; Rinari
(add-to-list 'load-path "~/path/to/your/elisp/rinari")
(require 'rinari)

idoはRinariとは別の便利機能なやつです。自分はdiredが使いにくくなったのでコメントアウトしちゃいました。

Rhtml

そしてRhtml用のセットアップとして

と3つから選べるようになっていますが、nXhtml-modeとかだとerbファイルでスニペットが使えないっぽいのでrhtml-modeを使います。

ここからダウンロードするかgitで

$ cd ~/path/to
$ git clone git://github.com/eschulte/rhtml.git

で.emacs.elに

;;; rhtml-mode
(add-to-list 'load-path "~/path/to/your/elisp/rhtml")
(require 'rhtml-mode)
(add-hook 'rhtml-mode-hook
  (lambda () (rinari-launch)))

背景を黒にしているターミナルやemacsを使ってるとRHTMLモードのハイライトが見づらいので emacsの~/site-lispとかに入れたrhtml/rhtml-fonts.elを編集
120行目あたりの

((class color) (class min-colors 8))
 :background "blue")

blueを

((class color) (class min-colors 8))
 :background "black")

blackと変えるとハイライトはなくなるけど見やすくなります。

snippet

%hとかのあとにTabを打つと<%h= @item %>とかしてくれる補完機能。便利。

$ wget http://yasnippet.googlecode.com/files/yasnippet-0.5.9.tar.bz2
$ tar jxf yasnippet-0.5.9.tar.bz2
$ mv yasnippet-0.5.9 ~/site-lisp/yasnippet
 
$ cd ~/site-lisp/yasnippet
$ git clone git://github.com/eschulte/yasnippets-rails.git

.emacs.elに

(setq load-path (cons (expand-file-name "~/site-lisp/yasnippet") load-path))
(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/site-lisp/yasnippet/snippets")
(yas/load-directory "~/site-lisp/yasnippet/yasnippets-rails")

rails.el

これよりもRinariのほうがよさそうな。

これもCarbon Emacsじゃはじめっから入っているので設定だけ

(defun try-complete-abbrev (old)
  (if (expand-abbrev) t nil))
 
(setq hippie-expand-try-functions-list
      '(try-complete-abbrev
        try-complete-file-name
        try-expand-dabbrev))
(setq rails-use-mongrel t)
(require 'rails)

Carbon Emacsじゃないばあい

参考)
アークウェブシステム開発SandBox

3つをパスの通ったところに置いて

(setq auto-mode-alist  (cons '("\\.rhtml$" . ruby-mode) auto-mode-alist))
(require 'rails)
(define-key rails-minor-mode-map "\C-c\C-p" 'rails-lib:run-primary-switch)
(define-key rails-minor-mode-map "\C-c\C-n" 'rails-lib:run-secondary-switch)
(defun try-complete-abbrev (old)
  (if (expand-abbrev) t nil)) 
(setq hippie-expand-try-functions-list
      '(try-complete-abbrev
        try-complete-file-name
        try-expand-dabbrev))

actionscript

flexとかをEmacsからやりたいから。Builderはもういや。

これとrascutlog.asを組み合わせると自動でパブリッシュ、ブラウザの再読み込みが 行われるのでほんとにBuilderいりません。Builderとrascut,log.asの組み合わせも楽だけどなんかいや。

Emacsでactionscriptを使うにはactionscript-mode.elとas-config.elとcc-modeが必要になります。

Casual Game Developmentとsorceforgeから下のみっつをダウンロードして~/site-lispに

actionscript-mode.el

actionscript-mode.el

as-config.el

as-config.el

cc-mode

cc-mode

actionscript-mode.elの先頭に

(setq load-path (cons (substitute-in-file-name "~/.emacs.d/cc-mode-5.28") load-path))
(require 'cc-mode)

as-config.elの一番上にある(require as-profiler)コメントアウト

.emacs.elに下記を追記。でもnxhtml入れてる場合はmxmlの編集が変なモードになるので
.emacs.elのnxhtmlの設定を記述している前に下記のコードを入れるようにするとなんでかちゃんとなる。
actionscriptの編集だけなら;;mxml以降はいらない。

;; actionscript
 
(defvar running-on-x (eq window-system 'x))
(autoload 'actionscript-mode "actionscript-mode" "Major mode for actionscript." t)
(add-to-list 'auto-mode-alist '("\\.as$" . actionscript-mode))
(eval-after-load "actionscript-mode" '(load "as-config"))
 
;; mxml
(setq auto-mode-alist
      (append
       (list
        '("\\.mxml" . xml-mode))
       auto-mode-alist))
(autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t)
(autoload 'xml-mode "psgml" "Major mode to edit XML files." t)

actionscript-mode(yasnippet)

yasnippetのactionscript-mode版

yasnippet

まずyasunippet-x.x.xx-tar.bz2をダウンロードして解凍してパスの通ったところに置く.
それとyasnippetのactionscript-modeを(.elじゃなく)yasnippet/snippetsに置く

$ cd ~/site-lisp
$ wget http://yasnippet.googlecode.com/files/yasnippet-0.5.10.tar.bz2
$ tar jxf yasnippet-0.5.10.tar.bz2
$ mv yasnippet-0.5.10 yasnippet
 
#actionscript-modeの追加
$ cd yasnippet/snippets/text-mode
$ svn export http://www.libspark.org/svn/yasnippet/text-mode/actionscript-mode/ 

次に .emacs.elに

(setq load-path (cons (expand-file-name "~/site-lisp/yasnippet") load-path))
;; load yasnippet
(require 'yasnippet)
(yas/initialize)
(yas/load-directory "~/site-lisp/yasnippet/snippets")
 
;;; hippie-expand
(global-set-key "\C-o" 'hippie-expand)
(setq hippie-expand-try-functions-list
      '(yas/hippie-try-expand
        try-expand-dabbrev
        try-expand-dabbrev-all-buffers
        try-expand-dabbrev-from-kill
        try-complete-file-name-partially
        try-complete-file-name
        try-expand-all-abbrevs
        try-expand-list try-expand-line
        try-complete-lisp-symbol-partially
        try-complete-lisp-symbol))

これで動的略語展開とかと一緒にC-oでyasnippetとかもできるように。

elscreen-tab

emacsにタブをつける。

からelscreen-tab.elをダウンロードしてパス通ったところにおく

(setq elscreen-prefix-key "\C-z")
(require 'elscreen "ELSCREEN" t)
(require 'elscreen-tab)

デフォルトのコマンドはC-zだけど変更したい場合はsetq elscreen-prefix-keyの部分のキーを変更

コマンド  動作
C-z C-c 新規タブ作成
C-z C-n,C-z C-p タブ移動
C-z C-z ファイルを新規タブに開く
C-z C-k 現在のタブを消す

ECB

IDEっぽい画面をくっつけるなんかすっごい拡張。起動の遅さもIDE…
まだ全然使いこなせていません。
でもelscreen-tabが使えなくなるから使ってません。
必要なものは

Carbon EmacsならCEDETは
Help→Carbon Emacs Package→Net Install→Cedetで簡単にインストールできる
ネットインストールしてるならECBのパッケージをpathが通ったところにおいて

$ cd ~/site-lisp/ecb-2.32
$ EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs CEDET=/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/

cedetも一緒にダウンロードしてインストールするなら

$ cd ~/site-lisp/cedet-1.0pre4
$ make EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs
$ cd ../ecb-2.32
$ make EMACS=/Applications/Emacs.app/Contents/MacOS/Emacs CEDET=~/site-lisp/cedet-1.0pre4

.emacs.elに

(setq load-path (cons (expand-file-name "~/site-lisp/ecb-2.32") load-path))
(load-file "/Applications/Emacs.app/Contents/Resources/site-lisp/cedet/common/cedet.el") ;;パスは適宜
(setq semantic-load-turn-useful-things-on t)
;; ECB
(require 'ecb)
(setq ecb-tip-of-the-day nil)
(setq ecb-windows-width 0.25)
 
(defun ecb-toggle ()
  (interactive)
  (if ecb-minor-mode
      (ecb-deactivate) 
    (ecb-activate)))
(global-set-key [f2] 'ecb-toggle)

F2で起動できるようになります。

js2-mode

js2-mode
下のjavascript-modeよりこっちがよろしそうな。
まず最新版をパスが通ったディレクトリに置く。名前変更。

$ cd ~/site-lisp
$ wget http://js2-mode.googlecode.com/files/js2-20080616a.el
$ mv js2-20080616a.el js2.el

でemacsからdiredで~/site-lispディレクトリを開く。 んで

M-x byte-compile-file [Enter] 
js2.el [Enter]

.emacs.elに

(autoload 'js2-mode "js2" nil t)
(add-to-list 'auto-mode-alist (cons  "\\.\\(js\\|json\\|jsn\\|htc\\)\\'" 'js2-mode))
 
#下は好みで tab幅を2にする設定
(add-hook 'js2-mode-hook
          (function
           (lambda ()
             (setq tab-width 2)
             (setq javascript-indent-level 2)
             (setq javascript-basic-offset tab-width)
             )))

javascript.el

これより上のjs2-modeのほうがよいです、たぶん。
nxhtmlに入ってるからCarbonEmacsにはいらないけど、Linuxの使うときとかに。
ここから最新版
jsファイルだけじゃなくjson,htcもついでにこの拡張で使っちゃうように。

;; javascript-mode                                                                                                      
(add-to-list 'auto-mode-alist (cons  "\\.\\(js\\|json\\|jsn\\|htc\\)\\'" 'javascript-mode))                        
(autoload 'javascript-mode "javascript" nil t)                                                                          
(add-hook 'javascript-mode-hook
          (function
           (lambda ()
             (setq tab-width 2)
             (setq javascript-indent-level 2)
             (setq javascript-basic-offset tab-width)
             )))

css-mode.el

ついでにcssも。javascript.elと同じ場所にあるcss-mode.elをsite-lispに入れて、

(autoload 'css-mode "css-mode" nil t)
(setq auto-mode-alist (cons '("\\.css$" . css-mode) auto-mode-alist))
(setq css-indent-level 2)

minibuf-isearch

minibuf-isearch

.emacsに

(require 'minibuf-isearch)

ミニバッファの履歴を【C-r】でインクリメンタルサーチできるようになります。

kill-summary.el

kill-summary.el

まず、kill-summary.elのtruncate-string を truncate-string-to-widthに変更する

.emacsに

(autoload 'kill-summary "kill-summary" nil t)(global-set-key "\M-y" 'kill-summary)

【M-y】か【M-x kill-summary】で呼び出し。

以下使い方の抜粋

コマンド  動作
p 前の候補を選択し元編集バッファヘヤンク
n 次の候補を選択し元編集バッファヘヤンク
q, C-g 中止
C-xo  窓を移動するとヤンク領域を消去
d 現在行のキルリングを即座に消去
. で現在行をヤンクポインタに設定
t 各キルの行数表示を切り替え
_ でサマリー高さを変更

・初期ウィンドウ高さは ~/.emacs 中で次のように行なう(デフォルト値 10)

(setq kill-summary-window-height 10)

kill-ring の内容を一覧表示して選べるようになるまする。

session.el

履歴保存。 session.el

(when (require 'session nil t)
  (setq session-initialize '(de-saveplace session keys menus)
        session-globals-include '((kill-ring 50)
                                  (session-file-alist 100 t)
                                  (file-name-history 100)))
  (add-hook 'after-init-hook 'session-initialize))

apache-mode.el

apacheの設定ファイルを色分けしてくれます。 debianのsite-とかの中のファイルも色がつくので便利です。

apache-mode.el

.emacs.elに

(autoload 'apache-mode "apache-mode" nil t)
(add-to-list 'auto-mode-alist '("\\.htaccess\\'"   . apache-mode))
(add-to-list 'auto-mode-alist '("httpd\\.conf\\'"  . apache-mode))
(add-to-list 'auto-mode-alist '("srm\\.conf\\'"    . apache-mode))
(add-to-list 'auto-mode-alist '("access\\.conf\\'" . apache-mode))
(add-to-list 'auto-mode-alist '("sites-\\(available\\|enabled\\)/" . apache-mode))

perl-completion.el

http://coderepos.org/share/browser/lang/elisp/perl-completion/trunk

Tramp

ローカルのemacsでリモートのファイルを直接編集できるようになるやつ。

まずtrampをダウンロード。でもCarbon Emacsには始めからはいっているからこの手順はいらない。

$ cd ~/src
$ wget http://ftp.gnu.org/gnu/tramp/tramp-2.1.9.tar.gz
$ tar xzfv tramp-2.1.9
$ mv tramp-2.1.9 ~/site-lisp/tramp

.emacs.elに下記の2行を追加。Carbon Emacsは最初の一行はいらない。

$ emacs .emacs.el
 
(add-to-list 'load-path "~/site-lisp/tramp/lisp/")
(require 'tramp)

使い方はC-x C-fで

/ssh://user@host:path
 
;;/ssh://emacser@example.jp:/home/emacser/.emacs.el

でもsshのポートを標準の22から変えていたりすると動きません。なのでローカルマシンの~/.ssh/configを設定。

$ vi ~/.ssh/config
 
Host ex
 HostName example.jp
 Port 1122
 User emacser
 Protocol 2

で、

/ssh:emacser@ex:/home/emacser/.emacs.el

で繋がるように。

/etcとかrootのファイルをいじりたい場合は

/multi:ssh:emacser@ex:sudo:root@localhost:/etc/resolv.conf

auto-complete

Emacs補完インターフェースの拡張。GUIっぽく。 C-oの補完がカッコよくなります。

まずは、githubからダウンロード

$ cd ~/site-lisp
$ git clone git://github.com/m2ym/auto-complete.git
$ cd auto-complete
$ git checkout v1.0
$ emacs -L . -batch -f batch-byte-com;ile *.el

そして.emacs.elに記述

$ emacs ~/.emacs.el
 
(add-to-list 'load-path "/Users/ユーザ/site-lisp/auto-complete")
(require 'auto-complete)
(require 'auto-complete-config)
(global-auto-complete-mode t)

zencoding-mode.el

参考 http://www.emacswiki.org/emacs/ZenCoding

めんどくさいHTMLを簡単にしてくれるzencodingを使うための拡張。

まずgithubからインストール

$ cd ~/site-lisp
$ git clone git://github.com/chrisdone/zencoding.git

.emacs.elにとりあえずzencodingを使いたいモードを追加。あとはここを参考にC-<Return>で

;;zencoding                                                                                                                      
(add-to-list 'load-path "~/site-lisp/zencoding/")
    (require 'zencoding-mode)
    (add-hook 'html-mode-hook 'zencoding-mode)
    (add-hook 'nxhtml-mode-hook 'zencoding-mode)
    (add-hook 'text-mode-hook 'zencoding-mode)
    (add-hook 'sgml-mode-hook 'zencoding-mode) ;; Auto-start on any markup modes

multiple-cursors, expand-region, smartrep

自分が入れたEmacs便利拡張・設定集 (2013年版)を参考に。

multiple-cursors, expand-region, smartrepの3つをpackage-list-packageからインストール

.emacs.d/init.elに下記を追記

(require 'expand-region)
(require 'multiple-cursors)
(require 'smartrep)
 
(global-set-key (kbd "C-,") 'er/expand-region)
(global-set-key (kbd "C-M-,") 'er/contract-region)
 
(global-set-key (kbd "<C-M-return>") 'mc/edit-lines)
(smartrep-define-key
 global-map "C-." '(("C-n" . 'mc/mark-next-like-this)
                    ("C-p" . 'mc/mark-previous-like-this)
                    ("*"   . 'mc/mark-all-like-this)))

使い方

C-,で同時編集したい単語を選択して、C-. *で同時編集と言った感じで。

コマンド  動作
C-, 選択
C-. * 全選択編集