PROMPTのカラーコード

PROMPTの設定をしようとしたとき、いつも探すのに時間がかかる上に、すぐに忘れるのでメモ。

/usr/share/zsh/functions/Misc/colors
  30 black                  40 bg-black
  31 red                    41 bg-red
  32 green                  42 bg-green
  33 yellow                 43 bg-yellow
  34 blue                   44 bg-blue
  35 magenta                45 bg-magenta
  36 cyan                   46 bg-cyan
  37 white                  47 bg-white
# 38 iso-8316-6           # 48 bg-iso-8316-6
  39 default                49 bg-default

Go のセミコロンの扱いが変わった。

09/12/22にリリースされたバージョンで、セミコロンの扱いが変わった。

今までは、セミコロンは、ブロックの末尾と、括弧の後だけ省略OKだったんだけど、
それが、セミコロンなしでもOKになった。*1

大元は、golang-nutsに投稿された以下の提案みたい。
http://groups.google.com/group/golang-nuts/browse_thread/thread/5ee32b588d10f2e9

セミコロン打たなくていいのは、かなりいい感じ。
スムースにかける。
コーディングが早くなる感じがする。

けど、上記のURLでも指摘されているけど、複数行に渡る式で演算子を前置するフォーマットがエラーになるのが、あぅー。

  // この書き方はeエラー
  foo := f1()
       + f2()
       + f3()
  
 // こう書くのが正解
 foo := f1() +
         f2() +
         f3()

演算子が前置の方が、自分は見やすいと思っているで、ちょっとなーという感じ。

セミコロンがないから、上の書き方がエラーになるのかと思いきや、セミコロンをつけても、エラー。
なので、以前のバージョンで書いたコードで、前置の演算子があるやつは軒並みコンパイルエラーになる。

そういう人の為に(だと思うけど)、gofmt を -oldparsers オプションを指定して、昔のコードを通すと、セミコロンなしのコードに変換してくれる。
例えば、以下の以前のコンパイラだと問題ないコードを

package main
import "fmt"
func f1() int { return 1 }
func f2() int { return 1 }
func f3() int { return 1 }
func main() {
  foo := f1()
       + f2()
       + f3();
  fmt.Println(foo)
}

gofmt -oldparser を通すと、ご丁寧に、演算子を後置してくれる。

package main

import "fmt"

func f1() int { return 1 }
func f2() int { return 1 }
func f3() int { return 1 }
func main() {
  foo := f1() +
         f2() +
         f3()
  fmt.Println(foo)
}

*1:当然、ワンライナーで書くならセミコロンが必要