     @trigger 'edit-session-created', editSession
     editSession
 
+  # Internal:
   defaultEditSessionOptions: ->
     tabLength: @tabLength
     softTabs: @getSoftTabs()
     softWrap: @getSoftWrap()
 
+  # Public: Retrieves all the {EditSession}s in the project; that is, the `EditSession`s for all open files.
+  #
+  # Returns an {Array} of {EditSession}s.
   getEditSessions: ->
     new Array(@editSessions...)
 
+  # Internal:
   eachEditSession: (callback) ->
     callback(editSession) for editSession in @getEditSessions()
     @on 'edit-session-created', (editSession) -> callback(editSession)
-
+  
+  # Public: Removes an {EditSession} association from the project.
+  #
+  # Returns the removed {EditSession}.
   removeEditSession: (editSession) ->
     _.remove(@editSessions, editSession)
-
+  
+  # Public: Retrieves all the {Buffer}s in the project; that is, the buffers for all open files.
+  #
+  # Returns an {Array} of {Buffer}s.
   getBuffers: ->
     buffers = []
     for editSession in @editSessions when not _.include(buffers, editSession.buffer)
       buffers.push editSession.buffer
     buffers
 
+  # Internal:
   eachBuffer: (args...) ->
     subscriber = args.shift() if args.length > 1
     callback = args.shift()

    else
      @on 'buffer-created', (buffer) -> callback(buffer)

  bufferForPath: (filePath, text) ->
    if filePath?
      filePath = @resolve(filePath)

  ignoreRepositoryPath: (path) ->
    config.get("core.hideGitIgnoredFiles") and git?.isPathIgnored(fsUtils.join(@getPath(), path))

  # Public: Given a path, this resolves it relative to the project directory.
  #
  # filePath - The {String} name of the path to convert
  #
  # Returns a {String}.
  resolve: (filePath) ->
    filePath = fsUtils.join(@getPath(), filePath) unless filePath[0] == '/'
    fsUtils.absolute filePath

  # Public: Given a path, this makes it relative to the project directory.
  #
  # filePath - The {String} name of the path to convert
  #
  # Returns a {String}.
  relativize: (fullPath) ->
    return fullPath unless fullPath.lastIndexOf(@getPath()) is 0
    fullPath.replace(@getPath(), "").replace(/^\//, '')

  # Public: Identifies if the project is using soft tabs.
  #
  # Returns a {Boolean}.
  getSoftTabs: -> @softTabs

  # Public: Sets the project to use soft tabs.
  #
  # softTabs - A {Boolean} which, if `true`, sets soft tabs
  setSoftTabs: (@softTabs) ->

  # Public: Identifies if the project is using soft wrapping.
  #
  # Returns a {Boolean}.
  getSoftWrap: -> @softWrap

  # Public: Sets the project to use soft wrapping.
  #
  # softTabs - A {Boolean} which, if `true`, sets soft wrapping
  setSoftWrap: (@softWrap) ->

  # Public: Given a path to a file, this constructs and associates a new {EditSession}.
  #
  # filePath - The {String} path of the file to associate with
  # editSessionOptions - Options that you can pass to the `EditSession` constructor
  #
  # Returns an {EditSession}.
  buildEditSession: (filePath, editSessionOptions={}) ->
    if ImageEditSession.canOpen(filePath)
      new ImageEditSession(filePath)
    else
      @buildEditSessionForBuffer(@bufferForPath(filePath), editSessionOptions)

  # Internal:
  buildEditSessionForBuffer: (buffer, editSessionOptions) ->
    options = _.extend(@defaultEditSessionOptions(), editSessionOptions)
    options.project = this
