sharjeelyunus/github-issues-dataset huggingface dataset:
Repository: angular
Issue: Animation using query and stagger doesn't properly animate from height: '*'
Labels: type: bug/fix,area: animations,freq2: medium,state: confirmed,P3

# 🐞 bug report

### Affected Package
<!-- Can you pin-point one or more @angular/* packages as the source of the bug? -->
@angular/animations: 8.1.1


### Is this a regression?
<!-- Did this behavior use to work in the previous version? -->
I'm not sure.


### Description
When attempting to use an animation query with a stagger to animate from an unknown height `height: '*'`, the animation does not work. It works fine when animating from a known height to an unknown height though.

For example, this works correctly:
```
animations: [
    trigger('expandCollapse', [
      transition('false => true', [
        query('.category', [
          style({ height: 0 })
        ]),
        query('.category', stagger('150ms', [
          animate(
              '600ms cubic-bezier(0.25, 0.8, 0.25, 1)',
              style({ height: '*' })
          )
        ]), { optional: true })
      ])
    ])
```

But this does not:
```
animations: [
    trigger('expandCollapse', [
      transition('true => false', [
        query('.category', stagger('-150ms', [
          style({ height: '*' }),
          animate(
              '600ms cubic-bezier(0.25, 0.8, 0.25, 1)',
              style({ height: 0 })
          )
        ]), { optional: true })
      ])
    ])
```


## 🔬 Minimal Reproduction
https://stackblitz.com/edit/angular-unknown-height-query-animation-bug?file=src/app/app.component.ts

In this example, if you click the "show" button you will see it animate to an unknown height just fine. But, once it's expanded and you click the "hide" button you will see that it doesn't properly animate from an unknown height back to zero.
Repository: pytorch
Issue: In-place updating the original value tensor should also update version counter of sparse tensor's values_ tensor
Labels: module: sparse,module: autograd,triaged

Currently, in-place updating the original value tensor after it's been used to construct a sparse tensor doesn't update version counter of the sparse tensor's `values_` tensor. Consider the following example:
```python
ind = torch.tensor([[0],[1]]).add_(1).sub_(1)
values = torch.tensor([1.]).add_(1).add_(1).sub_(1).sub_(1)
c = torch.sparse_coo_tensor(ind, values).requires_grad_()
grad = torch.sparse_coo_tensor(ind.clone(), values.clone())
d = c.mul(c)
values.add_(1)
d.backward(grad)  # This should have thrown an error saying there is version mismatch error for c
```
The reason is that we don't save the values tensor for backward in the sparse tensor constructor: 
```cpp
Tensor VariableType::_sparse_coo_tensor_with_dims_and_tensors(int64_t sparse_dim, int64_t dense_dim, IntArrayRef size, const Tensor & indices, const Tensor & values, const TensorOptions & options) {
  RECORD_FUNCTION("_sparse_coo_tensor_with_dims_and_tensors", std::vector<c10::IValue>({indices, values}), Function::peek_at_next_sequence_nr());
  auto& indices_ = unpack(indices, "indices", 3);
  auto& values_ = unpack(values, "values", 4);
  auto options_ = TensorOptions(options).is_variable(false);
  check_no_requires_grad(indices, "indices");
  std::shared_ptr<SparseCooTensorWithDimsAndTensorsBackward> grad_fn;
  if (compute_requires_grad( values )) {
    grad_fn = std::shared_ptr<SparseCooTensorWithDimsAndTensorsBackward>(new SparseCooTensorWithDimsAndTensorsBackward(), deleteFunction);
    grad_fn->set_next_edges(collect_next_edges( values ));
    grad_fn->indices_ = SavedVariable(indices, false);
    grad_fn->values_sizes = values.sizes().vec();
    // We should also save `values` here
  }
  ...
}
```
Repository: TypeScript
Issue: JS Typedef merged with default export alias behaves strangely
Labels: Bug,Domain: JavaScript

<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨

Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section!

Please help us by doing the following steps before logging an issue:
  * Search: https://github.com/Microsoft/TypeScript/search?type=Issues
  * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ

Please fill in the *entire* template below.
-->

<!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. -->
**TypeScript Version:**  3.4.0-dev.201xxxxx

<!-- Search terms you tried before logging this (so others can find this issue more easily) -->
**Search Terms:**

**Code**

in a TS file:
```ts
import Def from "./file.js"

type Q = Def;

console.log(Def);
```
with `file.js`:
```js
const x = 12;
export {x as default};
/**
 * @typedef {string | number} default
 */
```
with `checkJs` and `allowJs` both on, the hover text for `Def` is surprisingly correct:
![image](https://user-images.githubusercontent.com/2932786/61092787-8a5dcd00-a3fc-11e9-9944-dd6d2a04e00c.png)

however the `console.log` is marked as an error, stating:
```
'Def' only refers to a type, but is being used as a value here.
```
**Expected behavior:**
Since the quickinfo shows it's clearly a value (and a value is, in fact, exported), the default import should be usable as a value.

**Actual behavior:**
The default import is not usable as a value without error.

cc @sandersn
Repository: TypeScript
Issue: JS typedef merged with default export class behaves strangely
Labels: Bug,Domain: JavaScript

<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨

Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section!

Please help us by doing the following steps before logging an issue:
  * Search: https://github.com/Microsoft/TypeScript/search?type=Issues
  * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ

Please fill in the *entire* template below.
-->

<!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. -->
**TypeScript Version:**  3.4.0-dev.201xxxxx

<!-- Search terms you tried before logging this (so others can find this issue more easily) -->
**Search Terms:**

**Code**

```js
class Cls {
    x = 12;
    static y = "ok"
}
export default Cls;
/**
 * @typedef {string | number} default
 */
```
with `checkJs` and `allowJs` on reports no errors, however on usage:
```ts
import Def from "./file.js"

type Q = Def;

console.log(Def);
```
the quick info is pretty comprehensive:
![image](https://user-images.githubusercontent.com/2932786/61093036-84b4b700-a3fd-11e9-8a65-b4e5de211922.png)
however the `type` usage is equal to `string | number` (okay, maybe that's reasonable, how are a typedef and a class even merging anyway), however there's an error on the value usage:
```
'Def' only refers to a type, but is being used as a value here
```

**Expected behavior:**
An error on the attempted merge (a class and a type alias should be overlapping in symbol flags domains) and for the value usage to resolve to the class, probably.

**Actual behavior:**
The incongruent behavior described above.

cc @sandersn
Repository: TypeScript
Issue: JS typedef merged with default modified class errors strangely
Labels: Bug,Domain: Error Messages,Domain: JavaScript

<!-- 🚨 STOP 🚨 𝗦𝗧𝗢𝗣 🚨 𝑺𝑻𝑶𝑷 🚨

Half of all issues filed here are duplicates, answered in the FAQ, or not appropriate for the bug tracker. Even if you think you've found a *bug*, please read the FAQ first, especially the Common "Bugs" That Aren't Bugs section!

Please help us by doing the following steps before logging an issue:
  * Search: https://github.com/Microsoft/TypeScript/search?type=Issues
  * Read the FAQ: https://github.com/Microsoft/TypeScript/wiki/FAQ

Please fill in the *entire* template below.
-->

<!-- Please try to reproduce the issue with `typescript@next`. It may have already been fixed. -->
**TypeScript Version:**  3.4.0-dev.201xxxxx

<!-- Search terms you tried before logging this (so others can find this issue more easily) -->
**Search Terms:**

**Code**

```js
export default class C {};
/**
 * @typedef {string | number} default
 */
```

**Expected behavior:**
An coherent error on attempting to merge a class and a typedef.

**Actual behavior:**
```
Duplicate identifier 'default'.
```
and
```
Duplicate identifier 'C'.
```
on the `default` type alias and class `C`, respectively.

cc @sandersn
Repository: pytorch
Issue: Getting cuda runtime error (48) with Jetson TX2 when running simple program
Labels: module: cuda,triaged

## ❓ Questions and Help

### Please note that this issue tracker is not a help form and this issue will be closed.

We have a set of [listed resources available on the website](https://pytorch.org/resources). Our primary means of support is our discussion forum:

- [Discussion Forum](https://discuss.pytorch.org/)

When running in Jetson TX2 this simple code:
```python
import torch

dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
input1 = torch.rand(20, 20, 3).to(dev)
print(input1)
```
I'm getting this output:
```
THCudaCheck FAIL file=/home/nvidia/pytorch/aten/src/THC/generic/THCTensorMath.cu line=238 error=48 : no kernel image is available for execution on the device
Traceback (most recent call last):
  File "test_cuda_working.py", line 8, in <module>
    print(input1)
  File "/usr/local/lib/python2.7/dist-packages/torch/tensor.py", line 63, in __repr__
    return torch._tensor_str._str(self).encode(
  File "/usr/local/lib/python2.7/dist-packages/torch/_tensor_str.py", line 286, in _str
    tensor_str = _tensor_str(self, indent)
  File "/usr/local/lib/python2.7/dist-packages/torch/_tensor_str.py", line 204, in _tensor_str
    formatter = _Formatter(get_summarized_data(self) if summarize else self)
  File "/usr/local/lib/python2.7/dist-packages/torch/_tensor_str.py", line 234, in get_summarized_data
    start = [get_summarized_data(self[i]).reshape(-1) for i in range(0, PRINT_OPTS.edgeitems)]
  File "/usr/local/lib/python2.7/dist-packages/torch/_tensor_str.py", line 237, in get_summarized_data
    return torch.cat((start + end))
RuntimeError: cuda runtime error (48) : no kernel image is available for execution on the device at /home/nvidia/pytorch/aten/src/THC/generic/THCTensorMath.cu:238
```

If I change the code to:
```python
import torch

dev = torch.device("cuda") if torch.cuda.is_available() else torch.device("cpu")
input1 = torch.rand(18, 18, 3).to(dev)
print(input1)
```

It runs perfectly using cuda. Does anyone have an idea why this is happening?
Repository: vue
Issue: v-bind not update dom in client side when data in client side is different from the server side
Labels: bug,has workaround

### Version
2.6.10

### Reproduction link
[https://github.com/maunier/nuxt-learning](https://github.com/maunier/nuxt-learning)







### Steps to reproduce
npm install
npm run dev
http://127.0.0.1:8080/

### What is expected?
i expect the div is like this:
```
<div text="isClient">isClient</div>
```

### What is actually happening?
but now it is:
```
<div text="isServer">isClient</div>
```

---
it is not Nuxt's issue, I have tested in my own vue-ssr server without Nuxt, the problem is exsist still.  but the that project is not on the github, so i paste the nuxt project's link here

the core code is like this:
```
<div :text="text">{{ text }}</div>
```
```
data () {
      return {
        text: ''
      }
    },

    created () {
      this.text = Vue.prototype.$isServer ? 'isServer' : 'isClient'
    },
```

<!-- generated by vue-issues. DO NOT REMOVE -->
Repository: pytorch
Issue: Pytorch deadlock from distributed multiprocessing
Labels: oncall: distributed,triaged

## 🐛 Bug

Pytorch hangs indefinitely when using distributed multiprocessing with Pytorch 1.1.0 after 77k iterations (77939 and 77940 iterations). In Pytorch 1.0.1.post2, there is no such bug.

It appears to be deadlock.

The following distributed modules combine together in a very nasty way for some reason:
```
import torch.distributed as dist
train_sampler = torch.utils.data.distributed.DistributedSampler(train_data)
dist.init_process_group(backend=args.dist_backend, init_method=args.dist_url, world_size=args.world_size, rank=args.rank)
apex.parallel.DistributedDataParallel(model)
model, optimizer = apex.amp.initialize(model.cuda(), optimizer, opt_level=args.opt_level, keep_batchnorm_fp32=args.keep_batchnorm_fp32, loss_scale=args.loss_scale)
 model = apex.parallel.DistributedDataParallel(model)
```

## To Reproduce

Steps to reproduce the behavior:

1. Clone the following repo: [semseg](https://github.com/hszhao/semseg)
2. Use the following config:
3. Run the training script [train.py](https://github.com/hszhao/semseg/blob/master/tool/train.py)
4. Observe that Pytorch will hang indefinitely after the 77,939th iteration. 

## Expected behavior

Pytorch should not hang.

## Environment

PyTorch version: 1.1.0
Is debug build: No
CUDA used to build PyTorch: 10.0.130

OS: Ubuntu 18.04.2 LTS
GCC version: (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0
CMake version: version 3.10.2

Python version: 3.6
Is CUDA available: No
CUDA runtime version: 10.0.130
GPU models and configuration: many
Nvidia driver version: 
cuDNN version: 

Versions of relevant libraries:
[pip] numpy==1.16.3
[pip] torch==1.1.0
[pip] torchvision==0.3.0
[conda] blas                      1.0                         mkl
[conda] mkl                       2019.3                      199
[conda] mkl_fft                   1.0.12           py36ha843d7b_0
[conda] mkl_random                1.0.2            py36hd81dba3_0
[conda] pytorch                   1.1.0           py3.6_cuda10.0.130_cudnn7.5.1_0    pytorch
[conda] torchvision               0.3.0           py36_cu10.0.130_1    pytorch

## Additional context

Reproduced by multiple users, on multiple GPUs.
Repository: flutter
Issue: Flutter driver guide may need update
Labels: tool,t: flutter driver,c: proposal,P3,team-tool,triaged-tool

The Flutter driver guide provides instructions for executing a Flutter driver test suite from the command line. However, those instructions seem incompatible with the latest versions of Flutter, which list Chrome and Mac OS deployment targets.

Guide:
https://flutter.dev/docs/cookbook/testing/integration/introduction

When running the exact command at the bottom of that guide without an emulator, simulator, or device available, the following error is reported:

```bash
$ flutter drive --target=test_driver/app.dart
Found multiple connected devices:
  - macOS
  - Chrome

Using device macOS.
Starting application: test_driver/app.dart
Unable to find app name.
[project_path_redacted]/macos/Flutter/ephemeral/.app_filename does
not exist

Oops; flutter has exited unexpectedly.
Sending crash report to Google.
```

Either the instructions should be changed to include a device specification, or a more appropriate error message should be written, or Flutter should re-evaluate how it executes this command.
Repository: flutter
Issue: [webview_flutter] Support spawning new webviews from JS
Labels: c: new feature,p: webview,package,team-ecosystem,P3,triaged-ecosystem

I hope the webview_flutter plugin  can support multiple windows.I need this funcation to login facebook.
Repository: pytorch
Issue: How to use mpi backend without CUDA_aware
Labels: triaged,module: mpi

We noticed that the MPI backend doesn't support the GPU from the official website,(https://pytorch.org/docs/master/distributed.html), then we complied the Pytorch with USE_MPI=1. The command line is `python3 main.py -a resnet50 --dist-url 'tcp://12.0.50.1:12348' --dist-backend 'mpi' --multiprocessing-distributed --world-size 2 --rank 0 /data/tiny-imagenet-200/`.  However, we got the error message "CUDA tensor detected and the MPI used doesn't have CUDA-aware MPI support". I think the GPU-Direct is not enabled if used MPI backend, I don't know why it uses the CUDA tensor and CUDA-aware , seems GPU-Direct route. And how to set the args for avoiding the CUDA-aware. Thank you :)
Repository: rust
Issue: LLVM ERROR: out of memory with latest nightly (Windows 32bit)
Labels: A-LLVM,T-compiler,I-compilemem,C-bug

I am trying to upgrade rust nightly in a project of mine and getting `out of memory` errors due to that, only on Windows though.

- old rust version: rustc 1.37.0-nightly (0dc9e9c10 2019-06-15)
- new rust version: rustc 1.38.0-nightly (0b680cfce 2019-07-09)

Build log of the failure on appveyor: https://ci.appveyor.com/project/dignifiedquire/deltachat-core-rust/builds/25928022

The failure occurs consistently when trying to compile the [psl](https://crates.io/crates/psl) crate.
Repository: rust
Issue: core crate build fails for mips16 instruction set
Labels: A-LLVM,O-MIPS,T-compiler,C-bug

I am writing bare metal code for a mipsel cpu. Since there is no readily available target for hat in rustc I use `cargo xbuild` to build one from a target specification that I derived from the mipsel linux target. This works great and the resulting code runs on the CPU. The CPU I am using supports mips16 ISA to improve code density. However, when I enable the feature in my target spec I get the follwing error when compiling the core crate:


```
LLVM ERROR: Not supported instr: <MCInst 351 <MCOperand Reg:321> <MCOperand Imm:2147483647> <MCOperand Imm:-1>>
error: Could not compile `core`.

To learn more, run the command again with --verbose.
error: `"/Users/alexander/.rustup/toolchains/nightly-x86_64-apple-darwin/bin/cargo" "rustc" "-p" "alloc" "--release" "--manifest-path" "/var/folders/8g/_rkmq65n0qnf70c41xvp174h0000gn/T/xargo.cfTitdX9TS2Q/Cargo.toml" "--target" "mipsel-unknown-none" "--" "-Z" "force-unstable-if-unmarked"` failed with exit code: Some(101)
make: *** [target/mipsel-unknown-none/release/mipswififw] Error 1
```

This is my spec:
```
{
  "llvm-target": "mipsel-unknown-none",
  "arch": "mips",
  "cpu": "mips32r2",
  "data-layout": "e-m:m-p:32:32-i8:8:32-i16:16:32-i64:64-n32-S64",
  "executables": true,
  "features": "+mips32r2,+mips16,+soft-float",
  "linker-flavor": "ld.lld",
  "linker": "rust-lld",
  "panic-strategy": "abort",
  "max-atomic-width": 32,
  "os": "none",
  "target-c-int-width": "32",
  "target-endian": "little",
  "target-pointer-width": "32"
}
```

When I remove the mips16 feature the error is gone.
Repository: go
Issue: plugin: load plugin crash fatal error: runtime: no plugin module data
Labels: NeedsInvestigation,compiler/runtime

<!-- Please answer these questions before submitting your issue. Thanks! -->

### What version of Go are you using (`go version`)?

<pre>
go version go1.11.1 darwin/amd64
</pre>

### Does this issue reproduce with the latest release?
Yes

### What operating system and processor architecture are you using (`go env`)?

<details><summary><code>go env</code> Output</summary><br><pre>
GOARCH="amd64"
GOBIN="/Users/webtom/go/bin"
GOCACHE="/Users/webtom/Library/Caches/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOOS="darwin"
GOPATH="/Users/webtom/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GCCGO="gccgo"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/0t/9w0_mgfs511g4ssg2r38cb240000gn/T/go-build339879137=/tmp/go-build -gno-record-gcc-switches -fno-common"

</pre></details>

### What did you do?

```go
// **notice** build plugin command:   go build -o test1.so -buildmode=plugin *.go
// **notice** test1.so and test2.so have the same content and different paths
_, err1 := plugin.Open("test1.so")
fmt.Println(err)
// err1:   plugin.Open("./test1.so"): plugin was built with a different version of package errors
_, _ = plugin.Open("test2.so")
// fatal error: runtime: no plugin module data
```


### What did you expect to see?

No crash

### What did you see instead?

fatal error: runtime: no plugin module data

goroutine 1 [running]:
runtime.throw(0x40f2177, 0x1e)
	/usr/local/go/src/runtime/panic.go:608 +0x72 fp=0xc000047b00 sp=0xc000047ad0 pc=0x402a602
plugin.lastmoduleinit(0xc00008c480, 0xc00000e038, 0x4302ad0, 0x42, 0x41c7da0)
	/usr/local/go/src/runtime/plugin.go:22 +0xc03 fp=0xc000047c28 sp=0xc000047b00 pc=0x402baa3
plugin.open(0x40efb00, 0x10, 0x60, 0x0, 0x0)
	/usr/local/go/src/plugin/plugin_dlopen.go:87 +0x3b3 fp=0xc000047ee0 sp=0xc000047c28 pc=0x40b19d3
plugin.Open(0x40efb00, 0x13, 0x2, 0x60, 0x0)
	/usr/local/go/src/plugin/plugin.go:32 +0x35 fp=0xc000047f18 sp=0xc000047ee0 pc=0x40b11e5
main.main()
Repository: flutter
Issue: Emoji Keycap Sequence not supported on iOS
Labels: platform-ios,engine,customer: alibaba,a: typography,has reproducible steps,P2,found in release: 3.3,found in release: 3.7,team-ios,triaged-ios

The [Emoji Sequence Data for UTS #51](https://www.unicode.org/Public/emoji/12.0/emoji-sequences.txt) has a section for Keycap sequence which specifies emoji alternatives for #, *, 0, 1, 2, 3, 4, 5, 6, 7, 8 and 9. These are available on the iOS keyboard.

They are all rendered properly as emojis on Android but not on iOS. Instead displaying the leading symbol followed by a box artifact (see screenshots).

## Android

![Screenshot_1562931111](https://user-images.githubusercontent.com/1616517/61125945-673e2680-a4ab-11e9-888b-c71561725dd6.png)

## iOS

![Simulator Screen Shot - iPhone X - 2019-07-12 at 13 36 21](https://user-images.githubusercontent.com/1616517/61125956-745b1580-a4ab-11e9-963e-fe71b3c3dae1.png)

## Sample code

```dart
import 'package:flutter/material.dart';

const _emojiKeycapSequence = [
  '\u0023\ufe0f\u20e3', // keycap: #
  '\u002a\ufe0f\u20e3', // keycap: *
  '\u0030\ufe0f\u20e3', // keycap: 0
  '\u0031\ufe0f\u20e3', // keycap: 1
  '\u0032\ufe0f\u20e3', // keycap: 2
  '\u0033\ufe0f\u20e3', // keycap: 3
  '\u0034\ufe0f\u20e3', // keycap: 4
  '\u0035\ufe0f\u20e3', // keycap: 5
  '\u0036\ufe0f\u20e3', // keycap: 6
  '\u0037\ufe0f\u20e3', // keycap: 7
  '\u0038\ufe0f\u20e3', // keycap: 8
  '\u0039\ufe0f\u20e3', // keycap: 9
];

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) => MaterialApp(
        title: 'Flutter Demo',
        home: Scaffold(
          body: Center(
            child: Text(
              _emojiKeycapSequence.join(' '),
              style: TextStyle(fontSize: 20),
            ),
          ),
        ),
      );
}
```

## flutter doctor

```
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, v1.7.8+hotfix.3, on Mac OS X 10.14.5 18F132, locale en-SE)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 10.2.1)
[✓] iOS tools - develop for iOS devices
[✓] Android Studio (version 3.4)
[✓] Connected device (2 available)

• No issues found!
```
Repository: nvm
Issue: Option on install to not add path to .profile
Labels: feature requests,installing nvm

Is it possible to prevent the install-script to not add NVM to path in my e.g. ~/.profile? I use a zsh prezto plugin (node) which already does this.