一个C#语法高亮插件
语法高亮对程序员阅读代码来说有着不小的帮助,虽然VisualStudio本身支持C#语法高亮,但也只是对关键字、类名、字符串等少数元素加了标记,而我们代码中主题:变量、函数、属性、事件等都没有进行高亮,如下所示:
var nodes = from id in GetIdentifiersInSpans(doc.Workspace, doc.SemanticModel, spans)
let node = doc.SyntaxRoot.FindNode(id.TextSpan)
let symbol = doc.SemanticModel.GetSymbolInfo(GetExpression(node)).Symbol
where symbol != null
let type = RoslynSymbolParser.GetSymbolType(symbol)
where type != null
let classficationType = _classificationMap[type]
select id.TextSpan.ToTagSpan(spans[0].Snapshot, classficationType);
有一些第三方控件如Visual Assist针对这一不足进行了增强,不过VisualAssist是一个收费控件,之前我找到了一个控件,这个控件虽然效果非常不错,不过它的语法解析功能太弱,在代码中间修改的时候,一旦有语法错误,它的语法高亮就时效了,导致界面出现不停的闪烁现象。这个Bug导致该语法高亮特性基本不可用。本来想自己写的,结果发现VisualStudio扩展的相关文档太少,又没有什么时间投入研究它,便一度搁置了。
今天在GitHub上发现了一个语法高亮控件的项目roslyn-colorizer,这个项目本身做的并不完善,因此并没有作为插件发布。不过倒是一个很好的示例代码,基于它简单的改了一下,增加了参数、成员变量、属性、事件、枚举、函数等几种元素的语法高亮,前面的代码加上语法高亮插件后就变成了如下形式:
var nodes = from id in
GetIdentifiersInSpans(doc.Workspace, doc.SemanticModel, spans)
let node = doc.SyntaxRoot.FindNode(id.TextSpan)
let symbol = doc.SemanticModel.GetSymbolInfo(GetExpression(node)).Symbol
where symbol != null
let type = RoslynSymbolParser.GetSymbolType(symbol)
where type != null
let classficationType = _classificationMap[type]
select id.TextSpan.ToTagSpan(spans[0].Snapshot, classficationType);
一个C#语法高亮插件的更多相关文章
- 写了一个Hy的vscode语法高亮插件
-------2018 8 3----------- 把函数名和参数改了,正则有点古怪,参考自带的lambda表达式才搞定 但彩色括号走了弯路,各种配图有彩色括号的插件其实很少是自己搞的,其实只要再装 ...
- js 语法高亮插件之 Prism.js
之前也介绍过几款语法高亮插件<为博客园选择一个小巧霸气的语法高亮插件>以及关于他们的综合性能<再议 语法高亮插件的选择>.今天在小影志博客看到<使用 Prism.js 实 ...
- 12款最佳的 WordPress 语法高亮插件推荐
语法高亮工具增强了代码的可读性,美化了代码,让程序员更容易维护.语法高亮提供各种方式由以提高可读性和文本语境,尤其是对于其中可以结束跨越多个页面的代码,以及让开发者自己的程序中查找错误.在这篇文章中, ...
- sublime的Vue语法高亮插件安装
1.准备语法高亮插件vue-syntax-highlight. 下载地址: https://github.com/vuejs/vue-syntax-highlight 下载页面并下载: 解开压缩包vu ...
- vim语法高亮插件编写
# vim语法高亮插件编写 编写vim语法高亮插件很简单,只需要编写两个文件.vim放到vim的安装目录下的目录就可以了. ## 输出------------------------------ sy ...
- 2017-12-24 为新语言编写Visual Studio Code语法高亮插件
本文源码库: program-in-chinese/quan4-highlighter 语法高亮是一个开发环境的基本功能. 此文尝试为之前的"圈4"语言(详见编程语言试验之Antl ...
- 开发工具:sublime text3安装Vue语法高亮插件
一.将插件克隆到Sublime的packages目录 1.下载并解压插件(或直接git命令clone),得到vue-syntax-highlight-master文件夹 插件地址:https://gi ...
- Visual studio 2008 的语法高亮插件 NShader
前段时间一直在使用matlab,今天需要使用vs2008,而用惯了matlab,习惯了其中一项选中变量高亮的设置,突然回来使用VS,感到各种不适应,顿时想到了一个词:矫情 呵呵,于是在网上找各种插件, ...
- Visual studio 2008 的语法高亮插件 WordLight
前段时间一直在使用matlab,今天需要使用vs2008,而用惯了matlab,习惯了其中一项选中变量高亮的设置,突然回来使用VS,感到各种不适应,顿时想到了一个词:矫情 呵呵,于是在网上找各种插件, ...
随机推荐
- 浅入浅出EmguCv(一)OpenCv与EmguCv
最近接触计算机视觉方面的东西,于是准备下手学习opencv,从官网下载windows的安装版,配置环境,一系列步骤走完后,准备按照惯例弄个HelloWord.也就是按照网上的教程,打开了那个图像处理领 ...
- winform设置button的边框颜色,或取消边框颜色,不显示边框
// winform设置边框颜色不像webform那么简单,可以通过设置FlatAppearance,也可以通过重绘实现. 一.设置按钮本身属性 buttonBubufx.FlatStyle = Fl ...
- 有wsdl地址生成客户端调用
新建Java Project 1.项目名称:HelloWorldClient 2.建好的项目 3.生成客户端 选择HelloWorldClient 填写wsdl地址(参考:myeclipse构建web ...
- InvocationException: GraphViz's executables not found
当我在visualize决策树,运行以下代码时,报错: InvocationException: GraphViz's executables not found import pydotplus f ...
- [SQL]查询数据库里都有哪些自己建的表
方法一:SELECT * FROM FTCE_ACCS.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE'----------------- ...
- OC中copy的使用
@property内存管理策略的选择 1.非ARC 1> copy : 只用于NSString\block: 2> retain : 除NSString\block以外的OC对象: 3&g ...
- jquery 中post 、get的同步问题
jquery 中post .get的同步问题 解决方法1: 在全局设置: $.ajaxSetup({ async : false }); 然后再使用post或get方法 $.get("reg ...
- FPGA低级建模---按键去抖动
FPGA低级建模,原则上一个模块一个功能,如按键去抖动建模中,有两个模块. 1.detect_module 这个是按键检测模块,主要检测按键的高低电平变化,现在按键是按下还是释放. 2.delay_m ...
- Mono 异步加载数据更新主线程
主要是用 async和 await 调用 RunOnUiThread来更新. 调用函数: //异步加载数据开始 doInBackground (); //异步加载数据开始end protected a ...
- 规则引擎集成接口(七)规则引擎调用Java类
规则引擎调用Java类 通过myEclipse编写一个简单工程,其中方法是两数相加等到结果,既结果1=输入值1+输入值2.实现规则调用外部接口的方法有三种. 1:接口实例:在myEclipse中制作一 ...