only compile when changed and keyboard idle to smooth editing response