Gtksourceviewmm 语法突出显示不起作用
Gtksourceviewmm syntax highlighting not working
我正在尝试使用C++包装器 gtksourceview,我很久以前就做了这个,我记得它正在工作,但现在除了 higlight 语法之外一切都有效。我不太确定它是什么。我希望你能帮助我,我在互联网上读了很多关于这个图书馆的信息,但我可以找到解决方案。这是一个简单的代码。提前谢谢。
#include "twindow.h"
#include <iostream>
TWindow::TWindow() {
add(m_SourceView);
m_SourceView.set_size_request(640, 480);
m_SourceView.set_show_line_numbers();
m_SourceView.set_tab_width(4);
m_SourceView.set_auto_indent();
m_SourceView.set_show_right_margin();
m_SourceView.set_right_margin_position(80);
m_SourceView.set_highlight_current_line();
m_SourceView.set_smart_home_end(gtksourceview::SOURCE_SMART_HOME_END_ALWAYS);
gtksourceview::init ();
Glib::RefPtr<gtksourceview::SourceBuffer> buffer = m_SourceView.get_source_buffer () ;
if (!buffer) {
std::cerr << "gtksourceview::SourceView::get_source_buffer () failed" << std::endl ;
}
buffer->begin_not_undoable_action();
buffer->set_text(Glib::file_get_contents("main.c"));
buffer->end_not_undoable_action();
buffer->set_highlight_syntax(true);
Glib::RefPtr<gtksourceview::SourceLanguageManager> language_manager = gtksourceview::SourceLanguageManager::create();
Glib::RefPtr<gtksourceview::SourceLanguage> language = gtksourceview::SourceLanguage::create();
language = language_manager->get_language("c");
buffer->set_language(language);
show_all_children();
}
所以你想使用 gtksourceview 的 c++ 包装器,所以我猜你想使用 gtksourceviewmm。
为什么要创建LanguageManager
,可以使用默认的。如果您使用的是 gtksourceviewmm 的 3.2,请查看文档。
您还应该查看此功能。
所以一个例子看起来像;
Glib::ustring file_path = "/home/user/whatever/main.c";
Glib::RefPtr<Gsv::LanguageManager> language_manager = Gsv::LanguageManager::get_default();
Glib::RefPtr<Gsv::Language> language = language_manager->guess_language(file_path, Glib::ustring());
我想提到的另一件事是,您应该创建一个缓冲区来显示文件的内容,因为在我的项目中,当我想使用 get_source_buffer()
时,我遇到了 seg 错误,所以默认情况下它似乎是空的。
Glib::RefPtr<Gsv::Buffer> buffer = Gsv::Buffer::create(language);
buffer->set_text(Glib::get_file_contents(file_path));
this->m_SourceView.set_source_buffer(buffer);
相关文章:
- 我的神经网络不起作用 [XOR 问题]
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- C++映射:具有自定义类的运算符[]不起作用(总是返回0)
- C++为什么尽管我调用了void函数,它却不起作用
- 为什么在保护模式下继承升级不起作用
- 循环在计数器中不起作用
- 在其他文件中创建类时在 c++ 项目中不起作用
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- 为什么二进制搜索在我的测试中不起作用
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 命名窗口正在显示,但不起作用
- GCC 显示系统库中的错误.-iSystem 不起作用
- Qt. 方法显示文本() 如果我在 QStyledItemDelegate 中定义了 paint() 方法不起作用
- 在 gcc 中显示字符数组不起作用
- for 循环在显示函数 OpenGL 中调用的函数中不起作用
- Gtksourceviewmm 语法突出显示不起作用
- MSDN SetBitmap 不起作用,CButton 显示为空白
- 当使用循环显示数组时,什么都不起作用
- 在OpenGL屏幕中显示消息在Windows上不起作用
- 显示功能不起作用