Scala in Snow Leopard
Scala 開発環境を整える.
Step by Step Scala があるので,
なんとかエディタとかの環境を整えておこうというのが趣旨.
この辺は普通.
参考にあるscala-lang のところにあるのから一寸変えた*1
$ sudo port install scala $ svn export http://lampsvn.epfl.ch/svn-repos/scala/scala-tool-support/trunk/src/emacs scala-mode
;;; for scala (add-to-list 'load-path "/path/to/some/directory/scala-mode") (require 'scala-mode-auto) ;;; with yasnippet (setq yas/my-directory "/path/to/some/directory/scala-mode/contrib/yasnippet/snippets") (yas/load-directory yas/my-directory) (add-hook 'scala-mode-hook '(lambda () (yas/minor-mode-on) ))
ぐあっ.F1 で speedbar が出た.
とりあえずそのままにしておく.
M-x scala-run-scala でインタプリタを起動し,
で確認しながら作業するのかな.
バッファが居ないと,結果が見れないので,
バッファをちゃんと残しておくよう意識しないとが面倒かなぁ.
- M-x scala-switch-to-interpreter
を使ったりするのかな?触る余地がありそう.
参考
flymake 自体は動作するんだけど,
スクリプトを書くだけだとクラスが無いのでエラーになっちゃう.
その辺を上手く回避したい.
2009/10/11 10:15 削除: 元記事を修正されたのこと
string-not-empty ってのが無かったみたいなので,
(and dir (not (sring= dir ""))) とか,適当にでっちあげた.
16:47 追記
object Hello { def main(args: Array[String]) { for (arg <- args) println("Hello, " + arg + "!") } }
Singleton の main メソッドがあればいいみたい.
とわいえ,スクリプト書きたい...
2009/10/07 18:02 追記
これ便利スギだろ.Emacs から引けるようにしたい
注意点
$ git clone git://github.com/yuroyoro/InteractiveHelp.git # CaseSensitive だった $ cd InteractiveHelp $ unzip scala-2.7.5-apidocs-fixed.zip $ echo export SCALA_DOC_HOME=$PWD/scala-2.7.5-apidocs-fixed/ >> ~/.zshrc # 最後にスラッシュが必要っぽい $ source .zshrc $ scala -cp $PWD/interactive-help-1.0.jar > import com.yuroyoro.interactivehelp.Export._ > h("List") 0:Class scala.List 1:Object scala.List res0: com.yuroyoro.interactivehelp.Document = Seq
Emacs は,とりあえ以下のように設定.(SCALA_DOC_HOME は設定済みとする)
ih 部分はダウンロードしたディレクトリを適宜指定する.
とりあえず,動きそう.とあいえ,動作させた h("List") みたいなものが表示されたいなぁ.
;;; scaladoc (let ((ih (expand-file-name "s/app/InteractiveHelp/" home))) (setq scala-interpreter (concat "scala -cp " (concat ih "interactive-help-1.0.jar") " -i " (concat ih "import.scala")))) (defun my-scala-doc () "カーソル付近のScala doc を引く" (interactive) (let ((bounds (bounds-of-thing-at-point 'word))) (if bounds (let* ((beg (car bounds)) (end (cdr bounds))) (my-scala-doc-1 (concat "\"" (buffer-substring beg end) "\"")))))) (defun my-scala-doc-1 (&optional arg) "引数指定をして直接scala doc を引く" (interactive "sscala help args(ex \"List\", 0): ") (scala-check-interpreter-running) (comint-send-string scala-inf-buffer-name (concat "h(" arg ")\n")))