ラベル emacs の投稿を表示しています。 すべての投稿を表示
ラベル emacs の投稿を表示しています。 すべての投稿を表示

2013年5月20日月曜日

swank-jsを動かしてみた

https://github.com/swank-js/swank-jsのREADMEを参考に。

nodejsはyum install nodejs

npmはgit clone https://github.com/isaacs/npm.git
でmake install

npm install -g swank-js
swank-jsで起動

js2-modeが上手く動かなかったので、横道にそれてemacs24にした。
color-themeみたいのとpackageが標準で入ってて便利になってた。

packageからslime, slime-js, js2-modeをいれた。

ウェブブラウザで
http://IP:8009/swank-js/test.htmlを開く


javascriptファイルを開いてjs2-modeとslime-js-minor-modeを実行。
slime-connect
, select-remoteでブラウザ選択

C-M-xで関数を送る。
slime-eval-regionでリージョンを送る。


$('head').append('<link rel="stylesheet" href="http://IP/a.css" type="text/css" />');
とかするとheadタグの中にcssを追加させられる。
 
cssファイルを変更してから、slime-js-refresh-cssで変更が反映される。

時間がないので、設定のメモだけ、使いこなせたらよさそうなのだけど。
swank-jsのREADMEに書いてあるキーバインドが使えないことがあったりして、
うまく設定できてない気もする。

http://emacsrocks.com/e11.html
みたいなことできたらかっこいい。

2013年5月4日土曜日

emacsをdaemon化してみた。

LinuxをVirtualBoxで動かしてるけど、接続しっぱなしにしたままホストOSのスリープをするとゲストOSがフリーズする可能性が高かったので、スリープ前に閉じても復帰しやすくするために。

こんな感じのスクリプトで、daemonがいなければ作って、ログイン元のIPアドレスのXサーバに表示させる。
ログイン元のIPアドレスの抽出が適当なので駄目なケースもあるのかも。同じユーザで別の場所から入ってるとか。


#!/bin/sh
ret=`pgrep -f 'emacs --daemon'`
if [ -z $ret ]; then
        emacs --daemon
fi

name=`whoami`
addr=`w -h -s | grep "^$name" | awk '{print $3}' | grep '^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+$' | head -n 1`

emacsclient -c -n -d $addr:0.0

2013年4月29日月曜日

nreplのインストール

(require 'package)
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))
(setq package-user-dir (concat user-emacs-directory "vendor/elpa"))
(package-initialize)

をやってからpackage-list-packagesでnreplをインストール。

.cljのファイルを開いてclojure-jack-inを実行する。

*nrepl*バッファは作成されてclojureのプロセスも起動するのだが、
*nrepl*のバッファが空っぽになる。
何も表示されないのでかなり途方に暮れる。

nreplと連動するためのnrepl-interaction-modeを実行すると
completion-at-point-functionsが見つからないらしいエラーが表示される。

というわけでinit.elにこれを追加して解決。
(setq completion-at-point-functions '(auto-complete))


という設定をしたのを以前やったのに、
まったく思い出せずに2回目を体験したので忘れないようにメモ。

2013年3月10日日曜日

windowsとvmwareとlinuxとemacs

現在使っている開発環境は

ホストOSがWindowsでVMWareで
ゲストOSのCentOSでemacsを使っているのだけど、
ホストOSから利用する方法に色々なやり方があったのでメモ。

VMWareのウインドウをそのまま利用するタイプ
・Linuxデスクトップを表示して、その中でemacsを表示する。(1a)
・emacsだけをUnityでwindowsアプリっぽく表示する。(1b)
ホストOSでCygwinのX Window Serverを起動しておいて、emacsの-dオプションでそれを指定する。(2)
端末エミュレータで接続して、テキストモードで利用する。(3)
ゲストOSでVNCサーバを起動する。(4)

1bはアプリケーションのウインドウだけがホストOSに表示できるのが便利
3は使用できないキー操作があったりして不便
4はなんとなく遅い気がする
ということでしばらく1bと2で試していたのだけど、
ホストOSをスリープさせたときの復旧でどちらも
不安定だったので結局1aで使っている。
ウインドウのタイトルバーが邪魔に感じてきたという理由もある。

1aを使うときはVMWareをフルスクリーン表示にして、
emacsもフルスクリーンモードに設定すると画面上に余計なものがまったく表示されなくていい感じ。2の方法でもフルスクリーンは使えるけど。
 (set-frame-parameter (selected-frame) 'fullscreen 'fullboth)

1aはalt-tabがゲストOSに捕捉される
ホストOSのアプリがなぜかVMWareの下に隠れる
とかの細かい問題があるけど。

vmwareの上にツールバーが出るのが邪魔なら
vmwareのpreferences.iniに
pref.vmplayer.fullscreen.nobar = "TRUE"
で消せる。

2013年3月9日土曜日

PHP開発用emacs設定

php-mode, flymake


geben

ステップ実行に頼らずに生活できるようになりたいけど。
/etc/php.d/xdebug.ini
zend_extension=/usr/lib/php/modules/xdebug.so
xdebug.remote_enable=yes
xdebug.remote_autostart=no
xdebug.remote_host=localhost
xdebug.remote_port=9000

phpファイルにxdebug_break()
リクエストにXDEBUG_SESSION_STARTをつける


ctags

M-.
(defun run-refresh-tag()
(interactive)
(shell-command "cd /path/to/source; ctags -e -R --php-kinds=cfd &"))

yasnippet-php-mode

標準ライブラリの関数の引数の順序がいつもわからなくなるので助かる。

その他



;; 開いてるファイルをphpunitする
(defun run-php-unit()
(interactive)
(shell-command (concat "phpunit " (buffer-file-name) " &")))

;; 選択したリージョンをevalする

(defun php-eval-region ()
(interactive)
(shell-command-on-region (region-beginning) (region-end) "php ~/.emacs.d/php-eval-region/eval.php"))


~/.emacs.d/php-eval-region/eval.php
<?php
$region = file_get_contents('php://stdin');
if (strlen($region) > 0) {
  ob_start();
  eval('$_tmp_ = ' . $region . ';');
  $output = ob_get_contents();
  ob_end_clean();
  if (strlen($output) > 0) {
   print($output . "\n");
  }
  print_r($_tmp_);
}


まだ、これくらいしか設定してない。