From cd554a4f7bf2d60c42cbe955ba2dacf5679a68f2 Mon Sep 17 00:00:00 2001 From: probablycorey Date: Tue, 24 Sep 2013 13:21:12 -0700 Subject: [PATCH] Project::scan uses a task to do its work --- src/project.coffee | 17 +++++++---------- src/scan-handler.coffee | 15 +++++++++++++++ 2 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 src/scan-handler.coffee diff --git a/src/project.coffee b/src/project.coffee index f454f074b..a059b2020 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -1,7 +1,6 @@ fsUtils = require './fs-utils' path = require 'path' url = require 'url' -{PathSearcher, PathScanner, search} = require 'scandal' _ = require './underscore-extensions' $ = require './jquery-extensions' @@ -11,6 +10,7 @@ TextBuffer = require './text-buffer' EditSession = require './edit-session' EventEmitter = require './event-emitter' Directory = require './directory' +Task = require './task' Git = require './git' # Public: Represents a project that's opened in Atom. @@ -288,23 +288,20 @@ class Project options = {} deferred = $.Deferred() + searchOptions = + ignoreCase: regex.ignoreCase inclusions: options.paths includeHidden: true excludeVcsIgnores: config.get('core.excludeVcsIgnoredPaths') # args.unshift('--ignore', ignoredNames.join(',')) if ignoredNames.length > 0 - searcher = new PathSearcher() - scanner = new PathScanner(@getPath(), searchOptions) - - searcher.on 'results-found', (result) -> - iterator(result) - - console.time("search") - search regex, scanner, searcher, -> - console.timeEnd("search") + task = Task.once require.resolve('./scan-handler'), @getPath(), regex.source, searchOptions, -> deferred.resolve() + task.on 'scan:result-found', (result) => + iterator(result) + deferred # Private: diff --git a/src/scan-handler.coffee b/src/scan-handler.coffee new file mode 100644 index 000000000..b284a7911 --- /dev/null +++ b/src/scan-handler.coffee @@ -0,0 +1,15 @@ +{PathSearcher, PathScanner, search} = require 'scandal' + +module.exports = (rootPath, regexSource, options) -> + callback = @async() + + searcher = new PathSearcher() + scanner = new PathScanner(rootPath, rootPath) + + searcher.on 'results-found', (result) -> + emit('scan:result-found', result) + + flags = "g" + flags += "i" if options.ignoreCase + regex = new RegExp(regexSource, flags) + search regex, scanner, searcher, callback