     * `pid/1`         - creates a PID from a string
     * `pid/3`         - creates a PID with the 3 integer arguments passed
     * `pwd/0`         - prints the current working directory
-    * `r/1`           - recompiles and reloads the given module's source file
+    * `r/1`           - recompiles the given module's source file
+    * `recompile/0`   - recompiles the current project
     * `respawn/0`     - respawns the current shell
     * `s/1`           - prints spec information
     * `t/1`           - prints type information

    if mix_started? do
      config = Mix.Project.config
      reenable_tasks(config)
      case stop_apps(config) do
        {true, apps} ->
          Mix.Task.run("app.start")
          {:restarted, apps}
        {false, apps} ->
          Mix.Task.run("app.start", ["--no-start"])
          {:recompiled, apps}
      end
    else
      IO.puts IEx.color(:eval_error, "Mix is not running. Please start IEx with: iex -S mix")
      :error

  end

  defp reenable_tasks(config) do
    Mix.Task.reenable("compile")
    Mix.Task.reenable("compile.all")
    Mix.Task.reenable("compile.protocols")
    compilers = config[:compilers] || Mix.compilers
    Enum.each compilers, &Mix.Task.reenable("compile.#{&1}")
  end

  @doc """
