syntaxhighlighter终于可以正常复制代码了

本文将向你介绍使用syntaxhighlighter语法高亮插件复制代码不会自动换行的问题。

以前我用的是syntaxhighlighter3.0.8版本,本想着高版本,在优化和加载速度方面会略胜一筹,但经过实践检验,其实不然!于是决定回到经典的2.1版本,一切都调试就绪,正要上线时却发现只要从语法高亮插件syntaxhighlighter起作用的地方,其代码复制后都不会换行,代码全重堆叠在一起,很难阅读,网上看了别人syntaxhighlighter也有同样问题,去官网也查了说是Bug,那就没办法了吗?后来发现别人的虽直接复制代码是乱码,但在代码区的右上我会显示一个小小的浮动工具栏,这个工具栏提供有代码复制功能,而且可以换行,于是研究别人源码是怎么实现。框架资源分享

 

原来syntaxhighlighter已经为我们提供了解决方案,那就是使用clipboard.swf文件,它就是那个悬浮的工具栏,是Flash格式的,像这样引入这些文件:

1 <link type="text/css" rel="stylesheet" href="syntaxhighlighter/styles/shCore.css"/>
2 <link type="text/css" rel="stylesheet" href="syntaxhighlighter/styles/shThemeDefault.css"/>
3 <script type="text/javascript" src="syntaxhighlighter/scripts/shCore.js"></script>
4 <script type="text/javascript" src="syntaxhighlighter/scripts/brush.js"></script>
5 <script type="text/javascript">SyntaxHighlighter.config.clipboardSwf = 'syntaxhighlighter/scripts/clipboard.swf';
6SyntaxHighlighter.all();
7 </script>

 注意,如果的SyntaxHighlighter 2.1版本,Scripts文件夹内并没有brush.js文件,你可下载SyntaxHighlighter 3.0.8.3,从此版本的Scripts目录中拷贝这个文件,直接调用。框架资源分享

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt 中的 `QSyntaxHighlighter` 类可以用于实现文本编辑器中的语法高亮。以下是一个简单的示例: ```python from PyQt5.QtGui import QColor, QTextCharFormat, QFont, QSyntaxHighlighter from PyQt5.QtCore import Qt, QRegExp class SyntaxHighlighter(QSyntaxHighlighter): def __init__(self, parent=None): super(SyntaxHighlighter, self).__init__(parent) keyword_format = QTextCharFormat() keyword_format.setForeground(Qt.darkBlue) keyword_format.setFontWeight(QFont.Bold) keyword_patterns = ["\\bdef\\b", "\\bclass\\b", "\\bif\\b", "\\belif\\b", "\\belse\\b", "\\bwhile\\b", "\\bfor\\b"] self.highlighting_rules = [(QRegExp(pattern), keyword_format) for pattern in keyword_patterns] def highlightBlock(self, text): for pattern, format in self.highlighting_rules: expression = QRegExp(pattern) index = expression.indexIn(text) while index >= 0: length = expression.matchedLength() self.setFormat(index, length, format) index = expression.indexIn(text, index + length) ``` 在上面的示例中,我们定义了一个名为 `SyntaxHighlighter` 的类,该类继承自 PyQt 中的 `QSyntaxHighlighter` 类。在 `__init__` 方法中,我们定义了一些关键字的格式和正则表达式模式。在 `highlightBlock` 方法中,我们会对输入的文本进行匹配,并且对匹配到的关键字进行高亮处理。 为了使用该类,我们需要将其应用于文本编辑器的某个部分。例如: ```python from PyQt5.QtWidgets import QApplication, QTextEdit, QVBoxLayout, QWidget app = QApplication([]) editor = QTextEdit() highlighter = SyntaxHighlighter(editor.document()) layout = QVBoxLayout() layout.addWidget(editor) widget = QWidget() widget.setLayout(layout) widget.show() app.exec_() ``` 在上面的示例中,我们首先创建了一个 `QTextEdit` 部件,然后创建了一个 `SyntaxHighlighter` 实例,并将其应用于 `QTextEdit` 部件的文档中。最后我们将 `QTextEdit` 部件添加到一个 `QVBoxLayout` 中,并将其添加到一个 `QWidget` 中进行显示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值