• 发布一个最新版Productivity Power Tools中的CopyAsHtml扩展的修改版(含工具和源码)


    发布一个最新版Productivity Power Tools中的CopyAsHtml扩展的修改版(含工具和源码)


    Productivity Power Tools是微软官方发布的一个用于VS2010的扩展,功能是在Visual Studio的文本编辑器中按下Ctrl+C或通过其它方式执行“复制”或者“剪切”功能的时候,生成一份HTML格式的源码放到剪贴板中,此时可以在网页编辑器、网页中的可视化编辑器中直接粘贴出和VS中格式相同的源码。

    今天这个工具发布了最新的版本,其中CopyAsHtml组件进行了更新,加入了选项对话框,个人觉得这个比较实用,所以将原来的组件修改迁移到这个版本中。值得一提的,原来我发布的修改版存在一个BUG,就是当选择的内容存在不需要的缩进时,会导致缩进丢失,感谢之前mangohappy给我的反馈和在我发布的源码基础上进行的改进。

    1.这个和官方的组件相比有和更改?

    和官方组件相比,变更如下:

    1. 允许在生成最终代码时,忽略部分VS的文字编辑器样式(比如背景色,文字大小,文字样式等等)
    2. 使用OL来代替Pre显示代码区域,并允许加上class类名以便于在网页中进行代码样式的微调,支持显示行号(可以通过后期定义样式隐藏)
    3. 能在复制或剪切时自动移除公共缩进(见后说明,仅针对HTML)

    2.什么是自动移除公共缩进?

    这里指的公共缩进,就是指下面这个代码片段中所标注的区域:

    vs_ppt_copyashtml_enhance_removeblank

    如果要复制这个方法,修改后的扩展在复制后将会自动将红框中的缩进删除掉,于是复制出来的代码是这样的:

    1. public string GenerateHtml(NormalizedSnapshotSpanCollection spans, IWpfTextView textView)
    2. {
    3.     if ((spans == null) || (spans.Count == 0))
    4.     {
    5.         return "";
    6.     }
    7.     ((_DTEthis._serviceProvider.GetService(typeof(_DTE))).get_Properties("Productivity Power Tools""HTML Copy");
    8.     IClassificationFormatMap classificationFormatMap = this._classificationFormatMappingService.GetClassificationFormatMap(textView);
    9.     IClassificationType classificationType = this._classificationTypeRegistry.GetClassificationType("text");
    10.     HtmlMarkupProvider htmlMarkupProvider = new HtmlMarkupProvider(classificationFormatMap, classificationType, textView);
    11.     IClassifier classifier = this._classifierAggregatorService.GetClassifier(textView.TextBuffer);
    12.     string str = new FormattedStringBuilder(htmlMarkupProvider, classifier, classificationType).AppendSnapshotSpans(spans);
    13.     IDisposable disposable = classifier as IDisposable;
    14.     if (disposable != null)
    15.     {
    16.         disposable.Dispose();
    17.     }
    18.     return str;
    19. }

    3.选项对话框的说明

    我对选项对话框进行了修改,删除了一个选项,添加了几个选项:

    vs_ppt_copyashtml_enhance_options

    4.如何重定义代码块样式

    建议在上述的选项对话框中设置CodeBlockClassName,这样通过ol.CodeBlockClassName既可以重新设置样式。比如我的博客中重定义的样式如下,需要的同学可以参考下:

    1. ol.codeBlock{
    2.     border1px dotted #6C93FF;
    3.     line-height:150%;
    4.     word-break:break-word;
    5.     font-familyConsolas, Verdana !important;
    6.     border-radius:5px;
    7. }
    8. ol.codeBlock font{
    9.     font-size:12px!important;
    10. }
    11. ol.codeBlock{
    12.     background-color#E3E3FF !important;
    13.     list-style-positionoutside;
    14.     margin-left:0px;
    15. }
    16. ol.codeBlock li{
    17.     background-color#fff;
    18.     padding-left5px;
    19.     border-left1px solid #8A8AFF;
    20.     margin-left:50px;
    21. }
    22. ol.codeBlock li:nth-child(even){
    23.     background-color#f5f5f5;
    24. }

    5.如何使用

    下载附件,将解压后的 CopyAsHtml.dll 解压到 "%LocalAppData%\Microsoft\VisualStudio\10.0\Extensions\Microsoft\Productivity Power Tools\10.0.20214.15" 下并覆盖已有文件即可。

    源码需要VS2010才能打开。

    6.下载链接

    DLL下载:http://www.u-tide.com/fish/Service.asmx/Download/30/25 
    源码下载:http://www.u-tide.com/fish/Service.asmx/Download/30/26 
    发布页面:http://www.u-tide.com/fish/soft/copyAsHtml_For_ProductiveTools2010/

    最后发个疑问。为啥官方的扩展中这个dll只有25K,为啥我编译的会有40K呢?搞不明白。

  • 相关阅读:
    命令行环境下简单实用的工具——重定向&管道
    阿里2014校招笔试题(南大)——利用thread和sleep生成字符串的伪随机序列
    Pooled Allocation(池式分配)实例——Keil 内存管理
    modelsim数据导出用于matlab绘图
    顺序块和并行块
    初入博园
    数字图像处理实验(7):PROJECT 04-03 , Lowpass Filtering 标签: 图像处理MATLAB 2017-05-25 09:30 109人
    杭电acm刷题(3):1062,Text Reverse 标签: 杭电acm 2017-05-15 08:26 126人阅读 评论(0)
    杭电ACM刷题(2):1005,Number Sequence 标签: 杭电acmC语言 2017-05-11 22:43 116人阅读
    数字图像处理实验(6):PROJECT 04-02,Fourier Spectrum and Average Value 标签: 图像处理MATLABfft 2017-05-07 23:1
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/1964424.html
Copyright © 2020-2023  润新知