======拡張====== =====はじめに===== 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に解凍。\\ [[http://ourcomments.org/Emacs/nXhtml/doc/nxhtml.html|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の[[http://www.ruby-lang.org/ja/downloads/|ソースコード]]を解凍するとmiscディレクトリにemacs用の.elファイルが入っているのでそれをパスが通ったところに置く。 * inf-ruby.el * ruby-electric.el * ruby-mode.el * ruby-style.el * rubydb2x.el * rubydb3x.el の6つ. それとendに対応するブロックを教えてくれる[[http://www.emacswiki.org/cgi-bin/emacs/download/ruby-block.el|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の拡張 [[http://rinari.rubyforge.org/|Rinari: Ruby on Rails Minor Mode for Emacs]] 詳しくは[[http://rinari.rubyforge.org/|Rinari: Ruby on Rails Minor Mode for Emacs]]や[[http://d.hatena.ne.jp/willnet/20090110/1231595231#c|おもしろ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用のセットアップとして * nXhtml-mode * MuMaMo-Mode * rhtml-Mode と3つから選べるようになっていますが、nXhtml-modeとかだとerbファイルでスニペットが使えないっぽいのでrhtml-modeを使います。 [[http://github.com/eschulte/rhtml/tree/master|ここ]]からダウンロードするか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 %>とかしてくれる補完機能。便利。 * [[http://code.google.com/p/yasnippet/|yasnippet]] * [[http://github.com/eschulte/yasnippets-rails/tree/master| yasnippets-rails]] $ 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じゃないばあい 参考)\\ [[http://www.ark-web.jp/sandbox/wiki/388.html|アークウェブシステム開発SandBox]] * [[http://rubyforge.org/projects/emacs-rails/|rails.el]] * [[http://www.webweavertech.com/ovidiu/emacs/find-recursive.txt|find-recursive.el]] * [[http://www.kazmier.com/computer/snippet.el|snippet.el]] 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はもういや。 \\ これと[[programing:flex#rascut|rascut]]、 [[programing:flex#log.as|log.as]]を組み合わせると自動でパブリッシュ、ブラウザの再読み込みが 行われるのでほんとにBuilderいりません。Builderとrascut,log.asの組み合わせも楽だけどなんかいや。 \\ Emacsでactionscriptを使うにはactionscript-mode.elとas-config.elとcc-modeが必要になります。 [[http://blog.pettomato.com/index.html|Casual Game Development]]とsorceforgeから下のみっつをダウンロードして~/site-lispに === actionscript-mode.el=== [[http://blog.pettomato.com/content/actionscript-mode.el|actionscript-mode.el]] ===as-config.el=== [[http://blog.pettomato.com/content/as-config.el|as-config.el]] === cc-mode === [[http://sourceforge.net/project/downloading.php?groupname=cc-mode&filename=cc-mode-5.28.tar.gz&use_mirror=jaist|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版 [[ http://code.google.com/p/yasnippet/|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にタブをつける。 * [[http://www.geocities.co.jp/SiliconValley-SanJose/7474/EmacsLisp.html#escreen_and_elscreen|よろずや]] から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が使えなくなるから使ってません。\\ 必要なものは * [[http://cedet.sourceforge.net/|CEDET]] * [[http://ecb.sourceforge.net/|ECB]] 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===== [[http://code.google.com/p/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の使うときとかに。\\ [[http://www.brgeight.se/|ここから最新版]]\\ 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===== [[http://www.sodan.org/~knagano/emacs/minibuf-isearch/|minibuf-isearch]] .emacsに (require 'minibuf-isearch) ミニバッファの履歴を【C-r】でインクリメンタルサーチできるようになります。 =====kill-summary.el===== [[http://mibai.tec.u-ryukyu.ac.jp/~oshiro/Programs/elisp/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===== 履歴保存。 [[http://emacs-session.sourceforge.net/|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-****とかの中のファイルも色がつくので便利です。 [[http://www.emacswiki.org/cgi-bin/wiki/diff/apache-mode.el|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を使いたいモードを追加。あとは[[http://www.emacswiki.org/emacs/ZenCoding#toc7|ここ]]を参考にC- ;;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===== [[http://shibayu36.hatenablog.com/entry/2013/12/30/190354|自分が入れた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 "") '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-. * | 全選択編集 |