Skip to content

Instantly share code, notes, and snippets.


Generating a Tern.js defs file for p5.js


p5 source code --> YUIDoc JSON --> Tern defs JSON


Because p5.js uses YUIDoc to generate documentation, I'm using @angelozerr's tern.yuidoc plugin to generate a Tern.js defs file for p5.js. Ultimately, this will be used to implement code hints and autocomplete in the p5.js web editor.

  1. Get the p5.js API JSON file from the p5 website, here. Learn more about the p5.js API JSON file here.
  2. Then, get the Tern defs generator. Clone @angelozerr's repo with $ git clone


  • Get existing cm.setOption calls to work with the Tern cm.setOption calls
  • Figure out how to link tern.yuidoc as a dependency of p5 so a Grunt task can be created/run to create the Tern definition file each time there are updates
  • Autocomplete is only triggered with a .
  • Suuuper sluggish performance when multiple functions/vars/words register with Tern. Hard to tell whether this is Tern or CodeMirror show-hint

Functionality to add

  • Modal window that describes Tern keys (like existing keyboard shortcuts modal)
  • Toggle/keyboard shortcut to turn on Tern stuff
    • probably in "Settings: General" (see new Jerel design on Zeplin)
kaganjd /
Last active Mar 18, 2020
DNS config options for Netlify
kaganjd /
Created Jul 10, 2019
Python script to get a GitHub user's public SSH keys and write to .ssh/authorized_keys
# Run with `python3 [user]`
import requests
import subprocess
import argparse
parser = argparse.ArgumentParser()
args = parser.parse_args()
kaganjd /
Created Feb 21, 2018
Set up a virtualenv for AWSCLI with Python3
mkdir test-python
cd test-python/
virtualenv -p /Library/Frameworks/Python.framework/Versions/3.6/bin/python3 test-python
source test-python/bin/activate
pip3 install awscli --upgrade