google goと言う言語がある。
出だしの頃に、FreeBSDで動かそうとしてすぐに挫折して、直後に本家がFreeBSDにも対応してportsに入ったりしていたのだけれど、ずっと触っていなかったうちにだいぶ進化していた。
このblogを書いている時点での最新は1.0.3で、8gとか8lとか言うわかりにくいコマンドの代わりに、goと言うコマンドでビルドや実行ができるようになっていた。
で、zshを使っているとコマンド毎にオプションの補完ができたりするんだけど、zshの標準だとgoコマンドには対応していないので、
で、Macの場合、homebrewでinstallすると$GOROOT/share/zsh/site-functions/_go に、MacPortsでinstallすると$GOROOT/misc/zsh/go にzsh用の補完関数が置かれる。
こいつを、自分の.zshrcとかから読んでやると、goコマンドの補完が効くようになる。(ちなみに、brewの名前から連想して、/usr/share/zsh/site-functions/ に置いても有効にならない)
さて、ソースはemacsで編集することが多いので、emacs用のgo-modeはないのかと思ったら、$GOROOT/misc/emacs に go-mode-load.el と go-mode.el があった。
こいつらを、emacsのload-pathの通ったところに置いて上げて、
emacs上からソースを編集していると、emacs上から実行したくなる。
goのドキュメントを見ていると、gdbも使えそうなことが書いてあるが、とりあえずはshellから実行することにして、emacs上で M-x shell でシェルを起動する。
と、zshのプロンプトの前に「4m」とか余計な文字が出てくる。
後、せっかくzshでgoのコマンドが補完できるようにしたのに、emacsのshellモードだとzshの補完が効かない。
つらつらと調べていたら、Emacs 上で快適に Bash や Zsh を利用する設定 : 紹介マニアと言うページを発見した。
ほとんどはここに書いていることで解決するのだが、shellモード、termモード、multi-termモードと順番に説明しているため、multi-termを使いたい時にもtermモードの記述内容が必要だったりしたので、最終的にやったことを書いておく。
出だしの頃に、FreeBSDで動かそうとしてすぐに挫折して、直後に本家がFreeBSDにも対応してportsに入ったりしていたのだけれど、ずっと触っていなかったうちにだいぶ進化していた。
このblogを書いている時点での最新は1.0.3で、8gとか8lとか言うわかりにくいコマンドの代わりに、goと言うコマンドでビルドや実行ができるようになっていた。
% go run hoge.goでいきなり実行ができるし、
% go build hoge.goでコンパイルされてhogeと言う実行ファイルができる。
で、zshを使っているとコマンド毎にオプションの補完ができたりするんだけど、zshの標準だとgoコマンドには対応していないので、
% go r[TAB]とか go rの後でTABを押しても補完してくれない。
% go envでgoの環境変数(?)が見られるんだけど、そこに出てくる GOROOT の下に go の関連ファイルがある。(8gとか8lに該当するコマンドは、$GOROOT/pkg/tool/$GOOS_$GOHOSTARCH にある)
で、Macの場合、homebrewでinstallすると$GOROOT/share/zsh/site-functions/_go に、MacPortsでinstallすると$GOROOT/misc/zsh/go にzsh用の補完関数が置かれる。
こいつを、自分の.zshrcとかから読んでやると、goコマンドの補完が効くようになる。(ちなみに、brewの名前から連想して、/usr/share/zsh/site-functions/ に置いても有効にならない)
さて、ソースはemacsで編集することが多いので、emacs用のgo-modeはないのかと思ったら、$GOROOT/misc/emacs に go-mode-load.el と go-mode.el があった。
こいつらを、emacsのload-pathの通ったところに置いて上げて、
(require 'go-mode-load)してあげると、go-modeが使えるようになる。
emacs上からソースを編集していると、emacs上から実行したくなる。
goのドキュメントを見ていると、gdbも使えそうなことが書いてあるが、とりあえずはshellから実行することにして、emacs上で M-x shell でシェルを起動する。
と、zshのプロンプトの前に「4m」とか余計な文字が出てくる。
後、せっかくzshでgoのコマンドが補完できるようにしたのに、emacsのshellモードだとzshの補完が効かない。
つらつらと調べていたら、Emacs 上で快適に Bash や Zsh を利用する設定 : 紹介マニアと言うページを発見した。
ほとんどはここに書いていることで解決するのだが、shellモード、termモード、multi-termモードと順番に説明しているため、multi-termを使いたい時にもtermモードの記述内容が必要だったりしたので、最終的にやったことを書いておく。
- multi-termのインストール
http://www.emacswiki.org/emacs/download/multi-term.el を、emacsのload-pathの通ったディレクトリに置き、.emacsに以下を追加(autoload 'multi-term "multi-term" "multi-term" t)
※ 原因はわからないが、(require 'multi-term)だと、multi-termを実行したときに文字の背景色がemacsのデフォルトと変わって白くなってしまう。requireじゃなくてload-libraryをemacsが起動してからだと大丈夫(.emacsだとrequireと同じ挙動)なので、autoloadにしてみた。 - 「4m」が出ないようにする
4mが出るのは、emacsのshellモード系が使用するTERMであるeterm-colorがmacのterminfoに入っていないためらしいので、ticコマンドで~/.terminfoにインストールする。(eterm-color.ti の場所はemacsのインストール先に依存)% tic -o ~/.terminfo /usr/local/share/emacs/24.1/etc/e/eterm-color.ti
- シェルの出力が文字化けしないようにする
emacsの設定で、locale-coding-system に utf-8-hfsを設定する。(require 'ucs-normalize) (setq file-name-coding-system 'utf-8-hfs) (setq locale-coding-system 'utf-8-hfs)