Emacsの設定 2015年5月版
設定ファイル全体は以下
インストールしている主なパッケージ
helm
helm-miniは以下の通り設定した。これでhelm-miniのリストに現在のバッファ、最近開いたファイル、カレントディレクトリのファイル、gitの同一リポジトリのファイルが表示される。
;; helm-mini (progn (require 'helm-ls-git) (custom-set-variables '(helm-truncate-lines t) '(helm-delete-minibuffer-contents-from-point t) '(helm-mini-default-sources '(helm-source-buffers-list helm-source-recentf helm-source-files-in-current-dir helm-source-ls-git ))))
helm-ls-git
↑のhelm-miniのリストにgitのファイルを表示する為にインストールした。Emacs起動後に一度手動で起動しないとhelm-miniのリストに出てこない気がするけど今の所大きな問題ではないのでそのままにしてる。
Ensime
Scala用。補完や定義へのジャンプなどができるようになる。
web-mode
htmlとかjavascript書く時に利用。
auto-complete
補完用。便利。
ScalaからElasticsearchにアクセスするサンプル
VagrantでVM上にElasticsearch環境を構築し、そこに対してScalaでアクセスするサンプルを作った。
作ったファイル
環境
Vagrant 1.7.2
VirtualBox 4.3.26
Mac OSX yosemite 10.10.3
環境構築
Elasticsearchは以下のリポジトリ内のelasticsearchを使った。設定済みなので楽
vagrant upしたら/sbin/mount.vboxsf: mounting failed with the error: No such deviceというエラーが出たので以下の対応を実施
ホスト側 $ vagrant plugin install vagrant-vbguest
ゲスト側 $ sudo yum -y install kernel kernel-devel
ホスト側 $ vagrant reload
これでlocalhost:9200でElasticsearchにアクセスできる。
Elasticsearchにインデックスとドキュメントタイプを作成
インデックスとドキュメントタイプを作成しドキュメントを登録
curl -XPOST 'http://localhost:9200/twitter/tweet/' -d '{ "user" : "John Doe", "message" : "trying out Elasticsearch" }'
インデックスを確認
curl 'localhost:9200/_cat/indices?v'
検索
curl -XGET 'localhost:9200/_search'
Scala側の実装
ScalaでElasticsearchにアクセスする部分は以下のライブラリを使った。
READMEが詳細なので説明は割愛。
Emacs+EnsimeでScala開発環境を作った
動機
最初はIntelliJを使ってましたが、以下の理由でEmacs+Ensimeを使いはじめました。
・IntelliJが重く感じた
・マウスを使いたくなかった
環境
・Mac OSX Yosemite
・Emacs 24.5
構築
Scala+sbt
brew install sbt
Emacs
scala-mode2+Ensime
~/.emacs/init.elに以下の記述を追加しEmacsを再起動
(require 'package) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/") t) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (package-initialize) (unless (package-installed-p 'scala-mode2) (package-refresh-contents) (package-install 'scala-mode2)) (unless (package-installed-p 'ensime) (package-refresh-contents) (package-install 'ensime)) (setenv "PATH" (concat "PATH_TO_SBT:" (getenv "PATH"))) (setenv "PATH" (concat "PATH_TO_SCALA:" (getenv "PATH"))) (require 'scala-mode2) (require 'ensime) (add-hook 'scala-mode-hook 'ensime-scala-mode-hook)
sbt pluginの設定
~/.sbt/0.13/plugins/plugins.sbtに以下を追加
resolvers += Resolver.sonatypeRepo("snapshots") addSbtPlugin("org.ensime" % "ensime-sbt" % "0.1.5") // project/plugins.sbt dependencyOverrides += "org.scala-sbt" % "sbt" % "0.13.8"
プロジェクト毎のEnsime用設定ファイル生成
プロジェクトのディレクトリに移動し以下コマンドを実行
sbt gen-ensime
Ensimeを起動
Emacs起動後に以下を実行
M-x ensime
Emacs+Ensimeの感想
・キーボードだけで大体コーディングできるから楽
・補完もIntelliJのが良いと思うけどあんま気にならない
・作ってるのが小さいシステムなので今の所問題無いが、大規模になったらどうなるか不明