Subscribed unsubscribe Subscribe Subscribe

@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

= CoffeeScriptをEmacsで使ってみた

[2012-01-30 13:53:08]

最近はnaveらしい.

まずNode.jsいれる

インストールはここを参考にした.
Ubuntu 11.04 Natty Narwhal に Node と npm をインストール - 自分の感受性くらい

リポジトリを持ってきて,安定板をビルド.latestだと失敗するけど修正するほどでもないと言い聞かせる.

git clone https://github.com/isaacs/nave.git ~/.nave
~/.nave/nave.sh use stable

毎回使うときにいるらしいからとりあえずエイリアス..zshrcに書いた方がいいかも.

alias navestart='~/.nave/nave.sh use stable'

CoffeeScript入れる

npm install coffee-script

CoffeeScript-mode入れる

参考 http://mitukiii.jp/2011/04/15/coffee-script-on-mac-with-emacs/

githubにあるのでクローンしてパスの通ったところに置く.
defunkt/coffee-mode · GitHub

% addelisp((git submodule addして設定ファイル作ってemacsclientで開くスクリプト)) coffee-mode https://github.com/defunkt/coffee-mode.git
Cloning into git/coffee-mode...
remote: Counting objects: 458, done.
remote: Compressing objects: 100% (309/309), done.
remote: Total 458 (delta 161), reused 433 (delta 144)
Receiving objects: 100% (458/458), 69.65 KiB | 38 KiB/s, done.
Resolving deltas: 100% (161/161), done.
[master 2795707] add coffee-mode
 2 files changed, 4 insertions(+), 0 deletions(-)
 create mode 160000 git/coffee-mode

touch and linking
please check files
README.md	coffee-mode.el	examples
add setting
Waiting for Emacs...
done

設定を追加.binのパスがすっきりしてませんがターミナルでecho $PATHしてそれっぽいのを追加すればいいと思います.

(require 'coffee-mode)
(add-to-list 'auto-mode-alist '("\\.coffee$" . coffee-mode))
(add-to-list 'auto-mode-alist '("Cakefile" . coffee-mode))
(let ((dir (expand-file-name "~/.nave/installed/0.6.9/bin")))
  (when
      (file-exists-p dir)
    (setenv "PATH" (concat dir ":" (getenv "PATH")))
    (setq exec-path (append (list dir) exec-path))))

js2coffee入れる

javascriptcoffeescriptに変換できる.
参考 Emacsのcoffee-modeで、おもむろにJavascriptをcoffeeに置換する。(マージされました) - mizchi log

npm install js2coffee

リージョンを選択して M-x coffee-js2coffee-replace-region したらjavascriptのコードがcoffeescriptのコードになります

swank-js

EmacsからnodeやブラウザでCoffeeScriptを動かす - はなちん C-x C-c とか Emacsからnode.jsやChromeとSocket通信 - 八発白中 を参考にやろうとしたけど,どうもうまくいかなかった.