刚才辛苦写了半个小时,居然没有保存,郁闷啊。这是一个月之前做的工作,希望能够让需要的人省点时间。这几个月一直在做一个逻辑编辑器,生成的是python文件,用delphi写的,语法高亮使用的synedit。最近Level Design部门有些新的需求。原来的编辑器使用xml+schema存储数据,速度快,开发效率高,但是对于数值关联比较多的情况,查找,更新,就很繁琐了。因此这次决定使用数据库,用hibernate来做O/R映射,因为是桌面程序,当然是采用c#来开发了。
  语法高亮的控件,自己写很费时间。正好有这样一个开源的控件:http://www.icsharpcode.net/OpenSource/SD/中的ICSharpCode.TextEditor。最早是在CodeLib.net中看到它的应用,因为codelib.net编辑器支持java,c++,c#等的语法
高亮,我想改改能够用于其他语言,把sharpdevelop的代码下载下来一看。果然如此!首先需要先下载一个源代码包,找到icsharpcode.texteditor的工程,在resource files中添加一个python-mode.xshd文件,把build action设为EmbedAsResource,同时需要修改syntaxmodes.xml,重新编译。这样就得到了一个ICSharpCode.TextEditor.dll。python-mode.xshd是一个xml格式的语法文件,我是从linux下的某个编辑器的配置文件下刨出来的,EditPlus的网站也提供很多语法配置文件,这些拿来都不能直接用的,格式不一样,需要参考ICSharpCode.TextEditor本身带的一些语法文件进行修改。
  编译完成后,在vs.net的工具箱里面添加一个引用,就会得到这个控件ICSharpCode.TextEditor.TextEditorControl
很简单,下面是我改写的python-mode.xshd文件
使用支持语法高亮的控件<?xml version="1.0"?>
使用支持语法高亮的控件
<!-- syntaxdefinition for Python by tsbob -->
使用支持语法高亮的控件
使用支持语法高亮的控件
<SyntaxDefinition name ="Python" extensions = ".py">
使用支持语法高亮的控件    
使用支持语法高亮的控件    
<Properties>
使用支持语法高亮的控件        
<Property name="LineComment" value="#"/>
使用支持语法高亮的控件    
</Properties>
使用支持语法高亮的控件
使用支持语法高亮的控件    
<Digits name ="Digits" bold ="false" italic ="false" color ="DarkRed"/>
使用支持语法高亮的控件
使用支持语法高亮的控件    
<RuleSets>
使用支持语法高亮的控件        
<RuleSet ignorecase = "false">
使用支持语法高亮的控件            
<Delimiters>=!&gt;&lt;+-/*%&amp;|^~.}{,;][?:</Delimiters>
使用支持语法高亮的控件            
使用支持语法高亮的控件            
<Span name ="LineComment" bold ="false" italic ="false" color ="DarkMagenta" stopateol ="true">
使用支持语法高亮的控件                
<Begin>#</Begin>
使用支持语法高亮的控件            
</Span>
使用支持语法高亮的控件                    
使用支持语法高亮的控件            
<Span name ="BlockComment" bold ="false" italic ="false" color ="DarkSlateGray" stopateol ="true">
使用支持语法高亮的控件                
<Begin>[uUrR]?&quot;&quot;&quot;</Begin>
使用支持语法高亮的控件                
<End>&quot;&quot;&quot;</End>
使用支持语法高亮的控件            
</Span>
使用支持语法高亮的控件            
使用支持语法高亮的控件            
<Span name ="String" bold ="false" italic ="false" color ="Green" stopateol ="false">
使用支持语法高亮的控件                
<Begin>&quot;</Begin>
使用支持语法高亮的控件                
<End>&quot;</End>
使用支持语法高亮的控件            
</Span>
使用支持语法高亮的控件    
使用支持语法高亮的控件            
<Span name = "String2" bold = "false" italic = "false" color = "Green" stopateol = "false">
使用支持语法高亮的控件                
<Begin>&apos;</Begin>
使用支持语法高亮的控件                
<End>&apos;</End>
使用支持语法高亮的控件            
</Span>
使用支持语法高亮的控件            
使用支持语法高亮的控件            
<Span name ="Multiline String" bold ="false" italic ="false" color ="DarkSlateGray" stopateol ="false">
使用支持语法高亮的控件                
<Begin>[uUrR]?&quot;&quot;&quot;</Begin>
使用支持语法高亮的控件                
<End>&quot;&quot;&quot;</End>
使用支持语法高亮的控件            
</Span>
使用支持语法高亮的控件            
使用支持语法高亮的控件            
<Span name ="Multiline String 2" bold ="false" italic ="false" color ="DarkSlateGray" stopateol ="false">
使用支持语法高亮的控件                
<Begin>[uUrR]?&apos;&apos;&apos;</Begin>
使用支持语法高亮的控件                
<End>&apos;&apos;&apos;</End>
使用支持语法高亮的控件            
</Span>
使用支持语法高亮的控件            
<KeyWords name ="PythonKeyWords" bold="false" italic = "false" color = "DarkOrange">
使用支持语法高亮的控件                
<Key word =  "import" />
使用支持语法高亮的控件
<Key word =  "from" />
使用支持语法高亮的控件
<Key word =  "as" />
使用支持语法高亮的控件
<Key word =  "False" />
使用支持语法高亮的控件
<Key word =  "None" />
使用支持语法高亮的控件
<Key word =  "True" />
使用支持语法高亮的控件
<Key word =  "def" />
使用支持语法高亮的控件
<Key word =  "class" />
使用支持语法高亮的控件
<Key word =  "return" />
使用支持语法高亮的控件
<Key word =  "and" />
使用支持语法高亮的控件
<Key word =  "assert" />
使用支持语法高亮的控件
<Key word =  "break" />
使用支持语法高亮的控件
<Key word =  "continue" />
使用支持语法高亮的控件
<Key word =  "del" />
使用支持语法高亮的控件
<Key word =  "elif" />
使用支持语法高亮的控件
<Key word =  "else" />
使用支持语法高亮的控件
<Key word =  "except" />
使用支持语法高亮的控件
<Key word =  "exec" />
使用支持语法高亮的控件
<Key word =  "finally" />
使用支持语法高亮的控件
<Key word =  "for" />
使用支持语法高亮的控件
<Key word =  "global" />
使用支持语法高亮的控件
<Key word =  "if" />
使用支持语法高亮的控件
<Key word =  "in" />
使用支持语法高亮的控件
<Key word =  "is" />
使用支持语法高亮的控件
<Key word =  "lambda" />
使用支持语法高亮的控件
<Key word =  "not" />
使用支持语法高亮的控件
<Key word =  "or" />
使用支持语法高亮的控件
<Key word =  "pass" />
使用支持语法高亮的控件
<Key word =  "print" />
使用支持语法高亮的控件
<Key word =  "raise" />
使用支持语法高亮的控件
<Key word =  "try" />
使用支持语法高亮的控件
<Key word =  "while" />
使用支持语法高亮的控件
<Key word =  "yield" />
使用支持语法高亮的控件            
</KeyWords>            
使用支持语法高亮的控件            
<KeyWords name ="PythonException" bold="false" italic = "false" color = "Blue">
使用支持语法高亮的控件                
<Key word =  "ArithmeticError" />
使用支持语法高亮的控件
<Key word =  "AssertionError" />
使用支持语法高亮的控件
<Key word =  "AttributeError" />
使用支持语法高亮的控件
<Key word =  "EnvironmentError" />
使用支持语法高亮的控件
<Key word =  "EOFError" />
使用支持语法高亮的控件
<Key word =  "Exception" />
使用支持语法高亮的控件
<Key word =  "FloatingPointError" />
使用支持语法高亮的控件
<Key word =  "ImportError" />
使用支持语法高亮的控件
<Key word =  "IndentationError" />
使用支持语法高亮的控件
<Key word =  "IndexError" />
使用支持语法高亮的控件
<Key word =  "IOError" />
使用支持语法高亮的控件
<Key word =  "KeyboardInterrupt" />
使用支持语法高亮的控件
<Key word =  "KeyError" />
使用支持语法高亮的控件
<Key word =  "LookupError" />
使用支持语法高亮的控件
<Key word =  "MemoryError" />
使用支持语法高亮的控件
<Key word =  "NameError" />
使用支持语法高亮的控件
<Key word =  "NotImplementedError" />
使用支持语法高亮的控件
<Key word =  "OSError" />
使用支持语法高亮的控件
<Key word =  "OverflowError" />
使用支持语法高亮的控件
<Key word =  "ReferenceError" />
使用支持语法高亮的控件
<Key word =  "RuntimeError" />
使用支持语法高亮的控件
<Key word =  "StandardError" />
使用支持语法高亮的控件
<Key word =  "StopIteration" />
使用支持语法高亮的控件
<Key word =  "SyntaxError" />
使用支持语法高亮的控件
<Key word =  "SystemError" />
使用支持语法高亮的控件
<Key word =  "SystemExit" />
使用支持语法高亮的控件
<Key word =  "TabError" />
使用支持语法高亮的控件
<Key word =  "TypeError" />
使用支持语法高亮的控件
<Key word =  "UnboundLocalError" />
使用支持语法高亮的控件
<Key word =  "UnicodeDecodeError" />
使用支持语法高亮的控件
<Key word =  "UnicodeEncodeError" />
使用支持语法高亮的控件
<Key word =  "UnicodeError" />
使用支持语法高亮的控件
<Key word =  "UnicodeTranslateError" />
使用支持语法高亮的控件
<Key word =  "ValueError" />
使用支持语法高亮的控件
<Key word =  "WindowsError" />
使用支持语法高亮的控件
<Key word =  "ZeroDivisionError" />
使用支持语法高亮的控件            
</KeyWords>            
使用支持语法高亮的控件            
<KeyWords name = "AccessKeywords" bold="true" italic="false" color="Black">
使用支持语法高亮的控件                
<Key word = "self" />
使用支持语法高亮的控件            
</KeyWords>
使用支持语法高亮的控件            
使用支持语法高亮的控件            
<KeyWords name = "GlobalKeywords" bold="true" italic="false" color="DarkCyan">
使用支持语法高亮的控件                
<Key word =  "abs" />
使用支持语法高亮的控件
<Key word =  "apply" />
使用支持语法高亮的控件
<Key word =  "basestring" />
使用支持语法高亮的控件
<Key word =  "bool" />
使用支持语法高亮的控件
<Key word =  "buffer" />
使用支持语法高亮的控件
<Key word =  "callable" />
使用支持语法高亮的控件
<Key word =  "chr" />
使用支持语法高亮的控件
<Key word =  "classmethod" />
使用支持语法高亮的控件
<Key word =  "cmp" />
使用支持语法高亮的控件
<Key word =  "coerce" />
使用支持语法高亮的控件
<Key word =  "compile" />
使用支持语法高亮的控件
<Key word =  "complex" />
使用支持语法高亮的控件
<Key word =  "delattr" />
使用支持语法高亮的控件
<Key word =  "dict" />
使用支持语法高亮的控件
<Key word =  "dir" />
使用支持语法高亮的控件
<Key word =  "divmod" />
使用支持语法高亮的控件
<Key word =  "enumerate" />
使用支持语法高亮的控件
<Key word =  "eval" />
使用支持语法高亮的控件
<Key word =  "execfile" />
使用支持语法高亮的控件
<Key word =  "file" />
使用支持语法高亮的控件
<Key word =  "filter" />
使用支持语法高亮的控件
<Key word =  "float" />
使用支持语法高亮的控件
<Key word =  "getattr" />
使用支持语法高亮的控件
<Key word =  "globals" />
使用支持语法高亮的控件
<Key word =  "hasattr" />
使用支持语法高亮的控件
<Key word =  "hash" />
使用支持语法高亮的控件
<Key word =  "hex" />
使用支持语法高亮的控件
<Key word =  "id" />
使用支持语法高亮的控件
<Key word =  "input" />
使用支持语法高亮的控件
<Key word =  "int" />
使用支持语法高亮的控件
<Key word =  "intern" />
使用支持语法高亮的控件
<Key word =  "isinstance" />
使用支持语法高亮的控件
<Key word =  "issubclass" />
使用支持语法高亮的控件
<Key word =  "iter" />
使用支持语法高亮的控件
<Key word =  "len" />
使用支持语法高亮的控件
<Key word =  "list" />
使用支持语法高亮的控件
<Key word =  "locals" />
使用支持语法高亮的控件
<Key word =  "long" />
使用支持语法高亮的控件
<Key word =  "map" />
使用支持语法高亮的控件
<Key word =  "max" />
使用支持语法高亮的控件
<Key word =  "min" />
使用支持语法高亮的控件
<Key word =  "object" />
使用支持语法高亮的控件
<Key word =  "oct" />
使用支持语法高亮的控件
<Key word =  "open" />
使用支持语法高亮的控件
<Key word =  "ord" />
使用支持语法高亮的控件
<Key word =  "pow" />
使用支持语法高亮的控件
<Key word =  "property" />
使用支持语法高亮的控件
<Key word =  "range" />
使用支持语法高亮的控件
<Key word =  "raw_input" />
使用支持语法高亮的控件
<Key word =  "reduce" />
使用支持语法高亮的控件
<Key word =  "reload" />
使用支持语法高亮的控件
<Key word =  "repr" />
使用支持语法高亮的控件
<Key word =  "round" />
使用支持语法高亮的控件
<Key word =  "setattr" />
使用支持语法高亮的控件
<Key word =  "slice" />
使用支持语法高亮的控件
<Key word =  "staticmethod" />
使用支持语法高亮的控件
<Key word =  "str" />
使用支持语法高亮的控件
<Key word =  "sum" />
使用支持语法高亮的控件
<Key word =  "super" />
使用支持语法高亮的控件
<Key word =  "tuple" />
使用支持语法高亮的控件
<Key word =  "type" />
使用支持语法高亮的控件
<Key word =  "unichr" />
使用支持语法高亮的控件
<Key word =  "unicode" />
使用支持语法高亮的控件
<Key word =  "vars" />
使用支持语法高亮的控件
<Key word =  "xrange" />
使用支持语法高亮的控件
<Key word =  "zip" />
使用支持语法高亮的控件            
</KeyWords>
使用支持语法高亮的控件            
使用支持语法高亮的控件            
<KeyWords name = "NameSpaces" bold="true" italic="false" color="Blue">
使用支持语法高亮的控件                
<Key word = "import" />
使用支持语法高亮的控件                
<Key word = "from" />
使用支持语法高亮的控件                
<Key word =  "__name__" />
使用支持语法高亮的控件                
<Key word =  "__import__" />
使用支持语法高亮的控件                
<Key word =  "__debug__" />
使用支持语法高亮的控件            
</KeyWords>    
使用支持语法高亮的控件        
</RuleSet>
使用支持语法高亮的控件    
</RuleSets>
使用支持语法高亮的控件    
使用支持语法高亮的控件
</SyntaxDefinition>
使用支持语法高亮的控件
使用支持语法高亮的控件

相关文章:

  • 2021-09-20
  • 2021-04-07
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-03-04
  • 2021-11-18
猜你喜欢
  • 2021-11-16
  • 2022-12-23
  • 2022-12-23
  • 2021-12-27
  • 2021-10-21
  • 2022-12-23
  • 2021-09-30
相关资源
相似解决方案