diff --git a/src/atom.coffee b/src/atom.coffee index e85bbb120..b831b69c9 100644 --- a/src/atom.coffee +++ b/src/atom.coffee @@ -1,3 +1,4 @@ +vm = require 'vm' crypto = require 'crypto' ipc = require 'ipc' keytar = require 'keytar' @@ -527,3 +528,11 @@ class Atom extends Model delete window[key] else window[key] = value + + allowUnsafeEval: (fn) -> + oldEval = global.eval + try + global.eval = (source) -> vm.runInThisContext(source) + fn() + finally + global.eval = oldEval diff --git a/src/key-binding.coffee b/src/key-binding.coffee index 46b359858..57fbf4fcb 100644 --- a/src/key-binding.coffee +++ b/src/key-binding.coffee @@ -31,7 +31,7 @@ class KeyBinding catch keystrokePattern = fs.readFileSync(require.resolve('./keystroke-pattern.pegjs'), 'utf8') PEG = require 'pegjs' - @parser = PEG.buildParser(keystrokePattern) + atom.allowUnsafeEval => @parser = PEG.buildParser(keystrokePattern) @parser.parse(keystroke) diff --git a/static/index.html b/static/index.html index 71fade746..5559058dc 100644 --- a/static/index.html +++ b/static/index.html @@ -3,7 +3,7 @@