     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
+      Mix.Task.run("compile")
     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("app.start")
    Mix.Task.reenable("compile")
    Mix.Task.reenable("compile.all")
    compilers = config[:compilers] || Mix.compilers
    Enum.each compilers, &Mix.Task.reenable("compile.#{&1}")
  end

  defp stop_apps(config) do
    apps =
      cond do
        Mix.Project.umbrella?(config) ->
          for %Mix.Dep{app: app} <- Mix.Dep.Umbrella.loaded, do: app
        app = config[:app] ->
          [app]
        true ->
          []
      end
    stopped? =
      Enum.reverse(apps)
      |> Enum.all?(&match?({:error, {:not_started, &1}}, Application.stop(&1)))
      |> Kernel.not
    {stopped?, apps}
  end

  @doc """

    * `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 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
