diff --git a/src/default-directory-provider.coffee b/src/default-directory-provider.coffee index 7ecdbd354..5ddc89cca 100644 --- a/src/default-directory-provider.coffee +++ b/src/default-directory-provider.coffee @@ -21,7 +21,10 @@ class DefaultDirectoryProvider else path.dirname(projectPath) - new Directory(directoryPath) + if fs.isDirectorySync(projectPath) + return new Directory(directoryPath) + else + return null # Public: Create a Directory that corresponds to the specified URI. # diff --git a/src/project.coffee b/src/project.coffee index c92462ead..946ae4c55 100644 --- a/src/project.coffee +++ b/src/project.coffee @@ -39,6 +39,7 @@ class Project extends Model @emitter = new Emitter @buffers ?= [] @rootDirectories = [] + @packageRootDirectoryPaths = [] @repositories = [] @directoryProviders = [new DefaultDirectoryProvider()] @@ -203,10 +204,12 @@ class Project extends Model for provider in @directoryProviders break if directory = provider.directoryForURISync?(projectPath) if directory is null - # This should never happen because DefaultDirectoryProvider should always - # return a Directory. - throw new Error(projectPath + ' could not be resolved to a directory') - @rootDirectories.push(directory) + # DefaultDirectoryProvider doesn't handle specific directory protocols + # Atom Packages may use packageDirectoryPaths to add thier own paths later. + @packageRootDirectoryPaths.push(projectPath) + return + else + @rootDirectories.push(directory) repo = null for provider in @repositoryProviders