diff --git a/src/notebook.cc b/src/notebook.cc index 3cb89cf..19c2822 100644 --- a/src/notebook.cc +++ b/src/notebook.cc @@ -362,6 +362,8 @@ std::unique_ptr Notebook::get_project() { return std::unique_ptr(new ProjectPython(*this)); if(get_current_view()->language->get_id()=="js") return std::unique_ptr(new ProjectJavaScript(*this)); + if(get_current_view()->language->get_id()=="html") + return std::unique_ptr(new ProjectHTML(*this)); } return std::unique_ptr(new ProjectClang(*this)); diff --git a/src/project.cc b/src/project.cc index e3cf3ad..f7d5358 100644 --- a/src/project.cc +++ b/src/project.cc @@ -407,7 +407,15 @@ void ProjectMarkdown::compile_and_run() { std::ofstream file_stream(temp_path.string(), std::fstream::binary); file_stream << stdout_stream.rdbuf(); file_stream.close(); - Terminal::get().async_process("open "+temp_path.string()); + + auto uri=temp_path.string(); +#ifdef __APPLE__ + Terminal::get().process("open \""+uri+"\""); +#else + GError* error=NULL; + gtk_show_uri(NULL, uri.c_str(), GDK_CURRENT_TIME, &error); + g_clear_error(&error); +#endif } } } @@ -428,3 +436,14 @@ void ProjectJavaScript::compile_and_run() { Terminal::get().async_print(command+" returned: "+std::to_string(exit_status)+'\n'); }); } + +void ProjectHTML::compile_and_run() { + auto uri=notebook.get_current_view()->file_path.string(); +#ifdef __APPLE__ + Terminal::get().process("open \""+uri+"\""); +#else + GError* error=NULL; + gtk_show_uri(NULL, uri.c_str(), GDK_CURRENT_TIME, &error); + g_clear_error(&error); +#endif +} diff --git a/src/project.h b/src/project.h index 4e735ae..a69960b 100644 --- a/src/project.h +++ b/src/project.h @@ -53,8 +53,9 @@ public: void compile() override; void compile_and_run() override; - std::pair debug_get_run_arguments() override; std::mutex debug_start_mutex; +#ifdef JUCI_ENABLE_DEBUG + std::pair debug_get_run_arguments() override; void debug_start(std::function status_callback, std::function stop_callback) override; void debug_continue() override; @@ -67,6 +68,7 @@ public: void debug_show_variables() override; void debug_run_command(const std::string &command) override; void debug_delete() override; +#endif }; class ProjectMarkdown : public Project { @@ -92,4 +94,11 @@ public: void compile_and_run() override; }; +class ProjectHTML : public Project { +public: + ProjectHTML(Notebook ¬ebook) : Project(notebook) {} + + void compile_and_run() override; +}; + #endif // JUCI_PROJECT_H_