diff --git a/src/components/ContentWrapFiles.jsx b/src/components/ContentWrapFiles.jsx
index 347d059..73788f1 100644
--- a/src/components/ContentWrapFiles.jsx
+++ b/src/components/ContentWrapFiles.jsx
@@ -18,7 +18,8 @@ export default class ContentWrapFiles extends Component {
 		super(props);
 		this.state = {
 			isConsoleOpen: false,
-			isCssSettingsModalOpen: false
+			isCssSettingsModalOpen: false,
+			editorOptions: this.getEditorOptions()
 		};
 
 		this.fileBuffers = {};
@@ -77,6 +78,29 @@ export default class ContentWrapFiles extends Component {
 	componentDidMount() {
 		this.props.onRef(this);
 	}
+	getEditorOptions(fileName = '') {
+		let options = {
+			gutters: [
+				'error-gutter',
+				'CodeMirror-linenumbers',
+				'CodeMirror-foldgutter'
+			],
+			emmet: true
+		};
+		if (fileName.match(/\.css$/)) {
+		} else if (fileName.match(/\.js$/)) {
+			delete options.emmet;
+		} else if (fileName.match(/\.html$/)) {
+			// HTML
+			options = {
+				...options,
+				noAutocomplete: true,
+				matchTags: { bothTags: true }
+			};
+		}
+
+		return options;
+	}
 
 	createEditorDoc(file) {
 		let mode;
@@ -405,7 +429,10 @@ export default class ContentWrapFiles extends Component {
 		this.props.onEditorFocus(editor);
 	}
 	fileSelectHandler(file) {
-		this.setState({ selectedFile: file });
+		this.setState({
+			editorOptions: this.getEditorOptions(file.name),
+			selectedFile: file
+		});
 		if (!this.fileBuffers[file.name]) {
 			this.createEditorDoc(file);
 		}
@@ -553,14 +580,7 @@ export default class ContentWrapFiles extends Component {
 							</div>
 						</div>
 						<UserCodeMirror
-							options={{
-								mode: 'htmlmixed',
-								profile: 'xhtml',
-								gutters: ['CodeMirror-linenumbers', 'CodeMirror-foldgutter'],
-								noAutocomplete: true,
-								matchTags: { bothTags: true },
-								emmet: true
-							}}
+							options={this.state.editorOptions}
 							prefs={this.props.prefs}
 							onChange={this.onHtmlCodeChange.bind(this)}
 							onCreation={editor => (this.cm = editor)}
diff --git a/src/components/UserCodeMirror.jsx b/src/components/UserCodeMirror.jsx
index 4be2e8a..102e4e1 100644
--- a/src/components/UserCodeMirror.jsx
+++ b/src/components/UserCodeMirror.jsx
@@ -45,7 +45,7 @@ export default class UserCodeMirror extends Component {
 	shouldComponentUpdate(nextProps) {
 		if (nextProps.prefs !== this.props.prefs) {
 			const { prefs } = nextProps;
-			console.log('updating', nextProps.options.mode);
+			console.log('updating CM prefs', prefs);
 
 			this.cm.setOption('indentWithTabs', prefs.indentWith !== 'spaces');
 			this.cm.setOption(
@@ -74,7 +74,7 @@ export default class UserCodeMirror extends Component {
 
 	initEditor() {
 		const { options, prefs } = this.props;
-		console.log(100, prefs.lineWrap);
+		console.log(100, options);
 		this.cm = CodeMirror.fromTextArea(this.textarea, {
 			mode: options.mode,
 			lineNumbers: true,
@@ -143,10 +143,11 @@ export default class UserCodeMirror extends Component {
 		this.cm.addKeyMap({
 			'Ctrl-Space': 'autocomplete'
 		});
-		if (!options.noAutocomplete) {
-			this.cm.on('inputRead', (editor, input) => {
+		this.cm.on('inputRead', (editor, input) => {
+			// Process further If this has autocompletition on and also the global
+			// autocomplete setting is on.
+			if (!this.props.options.noAutocomplete && this.props.prefs.autoComplete) {
 				if (
-					!this.props.prefs.autoComplete ||
 					input.origin !== '+input' ||
 					input.text[0] === ';' ||
 					input.text[0] === ',' ||
@@ -157,8 +158,8 @@ export default class UserCodeMirror extends Component {
 				CodeMirror.commands.autocomplete(this.cm, null, {
 					completeSingle: false
 				});
-			});
-		}
+			}
+		});
 		this.props.onCreation(this.cm);
 	}