标签: syntax-highlighting

QPainter彩色文字(语法着色)

我有一个自定义的Qt小部件,我用来显示反汇编,我希望添加语法着色.

目前,我只是将其设置QPen为纯色,构造我想要显示的文本,并将其渲染到QPainter适当的坐标.

问题是,添加语法着色的最佳方法是什么?我想到了一些:

  1. 我可以简单地将着色分成逻辑块,每个块之前都将QPen设置为所需的颜色.
  2. 我可以使用特殊的转义字符来表示调色板中的更改,并一次渲染1个字符.
  3. 我可以对#1进行修改并创建一个列表std::pair<QColor, QString>,然后我可以简单地迭代列表设置颜色并绘制文本,因为我从列表的前面弹出项目.
  4. 完全不同的东西?

我知道我列出的3种方法中的每一种都在技术上有效,但我正在寻找一种非常有效的解决方案.这段代码将被大量调用.由于这是一个交互式调试器,如果此代码速度很慢,快速踩踏或跟踪的人会看到明显的减速.

编辑:我知道QSyntaxHighlighterQTextDocument.主要问题是这些通常不能很好地满足我的目的.我有几个列都有分隔线,可以来回滑动.为了给你一个想法,这是我的调试器截图的链接.正如您所看到的,它根本不像文本文档.实际上它更接近列表或表格.但是已经有一堆定制绘图正在进行,使得正常QTextDocument有点不切实际.

编辑:我是不正确的,似乎QTextDocument可以直接渲染到QPainter.看起来像我需要的!

编辑:目前还不清楚如何控制在哪里,如何QTextDocumentQTextLayout将绘制QPainter.我试图用它们无济于事.因此,如果有人可以提供一个基本的例子,那将非常有帮助.

编辑:我最终能够得到我想要的东西,使用这样的东西:

painter.setPen(default_color);
QTextDocument doc;
doc.setDefaultFont(font());
doc.setDocumentMargin(0);
doc.setPlainText(text);
highlighter_->setDocument(&doc);

painter.save();
painter.translate(x, y);
QAbstractTextDocumentLayout::PaintContext context;
context.palette.setColor(QPalette::Text, painter.pen().color());
doc.draw(&painter, context);
painter.restore();
Run Code Online (Sandbox Code Playgroud)

c++ qt syntax-highlighting qpainter

2
推荐指数
1
解决办法
3062
查看次数

我在哪里可以找到一个简单的基于JavaScript的HTML语法荧光笔?

我在哪里可以找到一个简单的基于JavaScript的HTML语法荧光笔?
更简单更好,我不需要任何行号或技巧,只需添加颜色.

如果它与dreamweaver颜色相同,那就更好了!

html javascript syntax-highlighting

2
推荐指数
1
解决办法
1079
查看次数

如何为给定目录/路径中的所有文件设置vim的默认语法高亮显示?

如果我打开一个给定的邮件文件,~/maildir-sent/那么文件没有语法高亮.Vi具有邮件文件的默认突出显示,我可以手动启用它

:set ft=mail 默认情况下不会发生这种情况,因为那里的邮件文件具有笨拙的名称结构 1339174749.7162_2.tm24-s00418:2,S

默认情况下如何使邮件文件突出显示?IE我认为这个默认读取类似"所有与另一个语法高亮定义不匹配的文件"

vim syntax-highlighting

2
推荐指数
1
解决办法
900
查看次数

VIM中模板工具包(.tt文件)的语法突出显示

我的目标是使用扩展程序对文件进行语法突出显示,*.tt到目前为止,每次都是令人沮丧的"不".

我找到了这个vim-perl插件.使用遗留方法'make install'安装,没有任何反应.尝试使用病原体.

我正在尝试启用语法突出显示的文件有扩展名*.tt,我注意到vim-perl有tt2.vim文件.

我不是VIM的专家,但我很确定我已正确安装它.假设这么多,应该改变任何一个名为VIM,Perl的文件tt2.*tt.*工作(我已经试过了,事实并非如此)?

是什么赋予了?

vim syntax-highlighting template-toolkit vim-plugin vim-syntax-highlighting

2
推荐指数
1
解决办法
1704
查看次数

Sublime文本:添加css3语法高亮显示

是否可以在CSS语法高亮中添加css3属性,例如:" animation-name "," animation-timing-function "或类似值:" display-table ".

我想它暗示*css_completions.py*,但我不知道如何继续.

http://img407.imageshack.us/img407/4408/54ki.png

css syntax-highlighting css3 sublimetext

2
推荐指数
1
解决办法
8525
查看次数

Vim:在C中,将结构名称突出显示为cType

我想设置Vim以突出显示struct名称为C类型,所以,我已经在语法脚本上乱了一点:

syn match cType   "\v(struct\s+)@<=[a-zA-Z0-9_]+"
syn match cType   "\v(enum\s+)@<=[a-zA-Z0-9_]+"
Run Code Online (Sandbox Code Playgroud)

它有效,但它显着减慢了我的vim!正如我刚刚打字的那样,Vim对Intel Core2 Duo 2.53 GHz的响应速度要小得多.

我已经评论了我的添加内容,现在它再次运行得很快.

因此,似乎\@<=regexp构造太慢而无法在语法脚本中使用.我试着将它与struct自己匹配:

syn match cType   "\vstruct\s+[a-zA-Z0-9_]+"
Run Code Online (Sandbox Code Playgroud)

但它不起作用.还有其他方法可以做到这一点吗?

vim struct syntax-highlighting

2
推荐指数
1
解决办法
872
查看次数

禁用某些文件名的语法突出显示

我在.vimrc中启用了语法高亮,但这使得加载某些文件的时间过长.因此,我需要禁用(或者,确切地说,不启用...启用它,然后禁用不是解决方案)语法突出显示这些文件.我试过了

au BufNewFile,BufRead !*.inc syntax enable
Run Code Online (Sandbox Code Playgroud)

但这使得没有应用语法高亮.这里提出的解决方案对我不起作用,因为我无法通过文件类型进行区分.我尝试适应无效,可能会或可能不会连接到"语法启用"所需的事件.

感谢您的任何指示!

vim syntax-highlighting autocmd

2
推荐指数
2
解决办法
1221
查看次数

如何将自定义语法高亮显示在.vimrc中?

我使用基本C/C++类型的简写形式,我希望Vim语法突出显示它们.我补充道

syn keyword cType u8 s8 u16 s16 u32 s32 u64 s64 f32 f64 byte

对我来说.vimrc,但这不起作用.我究竟做错了什么?

更新1其他地方已经建议问题是当Vim加载C或C++的语法文件时,它会覆盖.vimrc中的自定义语法.那是问题吗?

更新2 Duskwuff的回答暗示我要查看Vim的runtimepath变量,我将其设置为共享网络驱动器S:\vim\_vim,但是Vim仍然在寻找after目录中~\vimfiles\after,该目录不存在!我添加S:\vim\_vim\afterruntimepath变量,似乎已修复语法文件无法加载的问题.

c c++ vim syntax-highlighting

2
推荐指数
1
解决办法
792
查看次数

Kate的Groovy语法高亮显示

有没有办法为Groovy语言添加语法高亮kate

或者是否有一种非常相似的语言,也可以使用?

grails groovy syntax-highlighting kate

2
推荐指数
1
解决办法
792
查看次数

如何在PyCharm中获取.enaml文件的语法高亮?

我正在尝试学习Enaml,它是Python语言的扩展,允许您定义用于图形用户界面的对象的分层树.

由于enaml是Python语言的超集,因此它的语法可能与Python的语法不同,而IDE则不会突出显示它.有没有办法在PyCharm中获得enaml-syntax突出显示?或者也许在其他IDE中?

(我知道包'enaml-pygments'存在,但我不知道如何让它适用于IDE中的自动enaml语法高亮显示.)

python user-interface syntax-highlighting pycharm enaml

2
推荐指数
1
解决办法
347
查看次数