Custom JSBin Code Editor Settings
1 min read

You may already know about the JSBin tool created by Remy Sharp (@rem). It was the first website of it's kind that I'm aware of that lets you quickly prototype and play around with web concepts in a way that is social and fun. Although it has been around for a while Remy has been adding more and more features to it recently.

One of the ones that I want to point out is the ability to modify the settings of it's internal code editor in order to look and behave something like the following screenshot...

CodeKit Configuration Settings

JSBin internally uses the CodeMirror library for it's HTML, JavaScript, and CSS code editors. JSBin exposes the Configuration Settings of CodeMirror and allows you to set them yourself. The settings are stored in localStorage so they are available the next time you use JSBin. CodeMirror supports a whole suite of settings, but the following are the ones that I am most interested in:

  • theme - Color scheme that will be used for the editor.Currently the following themes exist: solarized-light, solarized-dark, monokai, vibrant-ink, cobalt, blackboard, ambiance, & jsbin (default)
  • indentUnit - The number of spaces inside a block of code
  • smartIndent - Automatically indent based on the context of what you are doing
  • tabSize - This defines the width of the tab character
  • indentWithTabs - Determines to use tabs instead of spaces when you intent
  • autoClearEmptyLines - Clears whitespace only lines when the cursor exits the line
  • lineWrapping - Wrap the contents of the line if it extends outside of the viewable area
  • lineNumbers - This will show lines numbers in the left gutter
  • matchBrackets - Matches associated bracket when your cursor is on a bracket

Making Changes to Your Editor Settings

You can set the above options manually in your browser's console like the following snippet of code...

jsbin.settings.editor.theme = "monokai";
jsbin.settings.editor.indentUnit = 4;
jsbin.settings.editor.smartIndent = true;
jsbin.settings.editor.tabSize = 4;
jsbin.settings.editor.indentWithTabs = true;
jsbin.settings.editor.autoClearEmptyLines = true;
jsbin.settings.editor.lineWrapping = true;
jsbin.settings.editor.lineNumbers = true;
jsbin.settings.editor.matchBrackets = true;
view raw console.js hosted with ❤ by GitHub

Sharing Your Editor Settings With Others

If you want to share with others your settings for a specific JSBin you can add an api URL parameter pointing to a configuration file.

The following URL will load JSBin with a custom set of code editor options.


The // file I am using looks like the following...

settings = {
jshint: true,
editor: {
theme: "monokai",
indentUnit: 4,
smartIndent: true,
tabSize: 4,
indentWithTabs: true,
autoClearEmptyLines: true,
lineWrapping: true,
lineNumbers: true,
matchBrackets: true
view raw settings.js hosted with ❤ by GitHub
Remy has been making videos about various features of JSBin on his Tips and Bits blog. You can view the video about the above feature here...

Edit post on GitHub

Control the Complexity of Your JavaScript Functions with JSHint
Exterminate Common jQuery Bugs Video