static void on_content_type_changed (GeditDocument *doc, GParamSpec *pspec, gpointer useless) { if (!doc->priv->language_set_by_user) { GtkSourceLanguage *language = guess_language (doc); gedit_debug_message (DEBUG_DOCUMENT, "Language: %s", language != NULL ? gtk_source_language_get_name (language) : "None"); set_language (doc, language, FALSE); } }
static void gedit_document_loaded_real (GeditDocument *doc) { GFile *location; if (!doc->priv->language_set_by_user) { GtkSourceLanguage *language = guess_language (doc); gedit_debug_message (DEBUG_DOCUMENT, "Language: %s", language != NULL ? gtk_source_language_get_name (language) : "None"); set_language (doc, language, FALSE); } doc->priv->mtime_set = FALSE; doc->priv->externally_modified = FALSE; doc->priv->deleted = FALSE; g_get_current_time (&doc->priv->time_of_last_save_or_load); set_readonly (doc, FALSE); gedit_document_set_content_type (doc, NULL); location = gtk_source_file_get_location (doc->priv->file); if (location != NULL) { /* Keep the doc alive during the async operation. */ g_object_ref (doc); g_file_query_info_async (location, G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE "," G_FILE_ATTRIBUTE_ACCESS_CAN_WRITE "," G_FILE_ATTRIBUTE_TIME_MODIFIED, G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT, NULL, (GAsyncReadyCallback) loaded_query_info_cb, doc); } }
void main_window::open(const std::string& filename) { this->buffer = Gsv::Buffer::create(); auto lm = Gsv::LanguageManager::create(); auto lang = lm->guess_language(filename, Glib::ustring()); this->buffer->set_highlight_syntax(true); this->buffer->set_language(lang); this->buffer->begin_not_undoable_action(); std::vector<char> contents; std::ifstream fs(filename); std::copy(std::istreambuf_iterator<char>(fs), std::istreambuf_iterator<char>(), std::back_inserter(contents)); this->buffer->set_text(&contents[0], &contents[0] + contents.size()); this->buffer->end_not_undoable_action(); this->buffer->set_modified(false); this->view.set_buffer(this->buffer); // this->buffer->place_cursor(this->buffer->get_start_iter()); }