KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm using the ACE editor for interactive JavaScript editing. When I set the editor to JavaScript mode, ACE automatically determines if the code is valid or not, with an error message and line number highlighted when it's not. During the change event handler, I want to detect if ACE thinks the code is valid or not before I attempt to eval() it. The only way I thought that I might do it is: var jsMode = require("ace/mode/javascript").Mode; var editor = ace.edit('mycode'), edEl = document.querySelector('#mycode'); editor.getSession().setMode(new jsMode); editor.getSession().on('change',function(){ // bail out if ACE thinks there's an error if (edEl.querySelector('div.ace_gutter-cell.ace_error')) return; try{ eval(editor.getSession().getValue()); }catch(e){} }); However: Leaning on the presence of an element in the UI with a particular class seems awfully fragile, but more importantly, The visual update for parsing occurs after the change callback occurs. Thus, I actually have to wait more than 500ms (the delay before the JavaScript worker kicks in): editor.getSession().on('change',function(){ setTimeout(function(){ // bail out if ACE thinks there's an error if (edEl.querySelector('div.ace_gutter-cell.ace_error')) return; try{ eval(editor.getSession().getValue()); }catch(e){} },550); // Must be longer than timeout delay in javascript_worker.js }); Is there a better way, something in an undocumented API for the JS mode, to ask whether there are any errors or not?
Tags (comma-separated)
Save Edits
Cancel