- let t = match local_data::get(tls_terminal, |v| v.map(|k| *k)) {
- None => {
- let t = term::Terminal::new(stderr);
- let tls = @match t {
- Ok(t) => Some(t),
- Err(_) => None
- };
- local_data::set(tls_terminal, tls);
- &*tls
+ local_data::get_mut(tls_terminal, |term| {
+ match term {
+ Some(term) => {
+ match **term {
+ Some(ref mut term) => write_pretty(term, msg, color),
+ None => io::stderr().write(msg.as_bytes())
+ }
+ }
+ None => {
+ let t = ~match term::Terminal::new(io::stderr()) {
+ Ok(mut term) => {
+ write_pretty(&mut term, msg, color);
+ Some(term)
+ }
+ Err(_) => {
+ io::stderr().write(msg.as_bytes());
+ None
+ }
+ };
+ local_data::set(tls_terminal, t);
+ }