一个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,感到各种不适应,顿时想到了一个词:矫情 呵呵,于是在网上找各种插件, ...
随机推荐
- access生成sql脚本,通过VBA调用ADOX
access生成sql脚本,通过VBA调用ADOX. 使用 MS Access 2016 的VBA,读取mdb文件中的所有表结构(数据类型/长度/精度等),生成对应的SQL create table语 ...
- keil中出现Undefined symbol FLASH_PrefetchBufferCmd (referred from main.o)等问题解决办法
在keil中仿照别人的程序写了RCC初始化的程序,编译后出现以下问题 .\obj\pro1.axf: Error: L6218E: Undefined symbol FLASH_PrefetchBuf ...
- [platform]Device和Driver注册顺序
1. 设备和驱动注册,无论谁先谁后,都可以通过查询总线进行匹配 设备挂接到总线上时,与总线上的所有驱动进行匹配(用bus_type.match进行匹配),如果匹配成功,则调用bus_type.prob ...
- .NET文件跨服务器上传下载
环境说明:两台服务器服务器为A,服务器为B,服务器B为文件服务器 1.在A和B上创建用户docshareuser,用户名和密码保持一致 2.B服务器上设置附件文件夹Attachments共享,添加用户 ...
- 启用vim-ruby的rails complete (macvim)
macvim启用rails complete 用vim已经很久了, 一直用spf13也挺好的, 最近遇到要处理一个遗留项目, 数据库字段太多, 因此折腾了一下配置好vim的ruby-completio ...
- javascript中日期格式与时间戳之间的转化
日期格式与时间戳之间的转化 一:日期格式转化为时间戳 function timeTodate(date) { var new_str = date.replace(/:/g,'-'); new_str ...
- css3画三角形的原理
以前用过css3画过下拉菜单里文字后面的“下拉三角符号”,类似于下面这张图片文字后面三角符号的效果 下面是一个很简单的向上的三角形代码 #triangle-up { width: 0; height: ...
- [转]linux sort,uniq,cut,wc命令详解
sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 ...
- window7下使用vagrant打造lamp开发环境(二)
上一节我们基本把软件跟系统环境,以及连接虚拟机给配置好了,下面我们将要进行开发环境的搭建(lamp) 这里安装其实很简单,因为我们用的centos,所以很大一部分安装都是通过yum安装 关于yum的详 ...
- 第三章 Git的入门 - 读书笔记
Android驱动月考3 第三章 Git的入门 - 读书笔记 对于Github,这是全世界最大的开源平台,你可以把你做的项目在这里开源,把你发现的一些新技术在这里开源,向全世界的开发者们分享,大家都彼 ...