1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
|
Description: Use valid pygments style
Author: Rafael Laboissière <rafael@debian.org>
Forwarded: https://sourceforge.net/p/xmds/mailman/message/37730358/
Applied-Upstream: https://sourceforge.net/p/xmds/code/3129/
Last-Update: 2022-11-02
--- xmds2-3.1.0+dfsg.orig/userdoc/src/conf.py
+++ xmds2-3.1.0+dfsg/userdoc/src/conf.py
@@ -80,7 +80,9 @@ exclude_trees = []
# The name of the Pygments (syntax highlighting) style to use.
# pygments_style = 'sphinx'
-pygments_style = 'friendly_plus'
+sys.path.append(os.path.abspath("./_pygments"))
+pygments_style = 'FriendlyPlusStyle.FriendlyPlusStyle'
+extensions = ['XMDSScriptLexer']
highlight_language='xmds2'
--- /dev/null
+++ xmds2-3.1.0+dfsg2/userdoc/src/_pygments/FriendlyPlusStyle.py
@@ -0,0 +1,36 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+"""
+FriendlyPlusStyle.py
+
+Created by Graham Dennis on 2008-11-18.
+
+Copyright (c) 2008-2012, Graham Dennis
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+"""
+
+from pygments.styles.friendly import FriendlyStyle
+from pygments.token import String
+
+class FriendlyPlusStyle(FriendlyStyle):
+ """
+ Slight modification of the Friendly style to make attribute-string values
+ have different colours.
+ """
+
+ styles = FriendlyStyle.styles.copy()
+ styles.update({String: "italic #517918"})
+
--- /dev/null
+++ xmds2-3.1.0+dfsg2/userdoc/src/_pygments/XMDSScriptLexer.py
@@ -0,0 +1,82 @@
+#!/usr/bin/env python3
+# encoding: utf-8
+"""
+XMDSScriptLexer.py
+
+Created by Graham Dennis on 2008-11-18.
+
+Copyright (c) 2008-2012, Graham Dennis
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+"""
+
+from pygments.lexers.web import XmlLexer
+from pygments.lexers.compiled import CLexer
+from pygments.lexer import bygroups, using
+from pygments.token import Comment, Keyword, Name
+
+class XMDSCodeLexer(CLexer):
+ """
+ A lexer for the code sections of XMDS/xpdeint simulation scripts.
+
+ Only to be used by the XMDSScriptLexer.
+ """
+
+ name = 'XMDS-Code'
+ aliases = ['xmds-code', 'xpdeint-code']
+ filenames = []
+
+ xmds_types = set(['complex', 'fftw_complex'])
+ xmds_functions = set(['rcomplex', 'pcomplex', 'real', 'imag', 'mod', 'mod2',
+ 'arg', 'conj', 'c_exp', 'c_log', 'c_sqrt'])
+ xmds_constants = set(['i'])
+
+ def get_tokens_unprocessed(self, text):
+ for index, token, value in CLexer.get_tokens_unprocessed(self, text):
+ if token is Name:
+ if value in self.xmds_types:
+ token = Keyword.Type
+ elif value in self.xmds_functions:
+ token = Name.Function
+ elif value in self.xmds_constants:
+ token = Keyword.Constant
+ yield index, token, value
+
+
+
+class XMDSScriptLexer(XmlLexer):
+ """
+ A lexer for XMDS/xpdeint simulation scripts.
+ """
+
+
+ name = 'XMDS'
+ aliases = ['xmds2','xmds','xpdeint']
+ filenames = ['*.xmds']
+
+ cdataRule = (r'(\<\!\[CDATA\[)(.*?)(\]\]\>)',
+ bygroups(Comment.Preproc, using(XMDSCodeLexer), Comment.Preproc))
+
+ tokens = XmlLexer.tokens.copy()
+ tokens['root'].insert(0, cdataRule)
+
+ def analyse_text(text):
+ if XmlLexer.analyse_text(text) > 0 and '<simulation' in text:
+ return 0.8
+
+
+def setup(app):
+ app.add_lexer('xmds2', XMDSScriptLexer)
+ app.add_lexer('xpdeint', XMDSScriptLexer)
|