ICSharpCode.TextEditor

前段时间想写richtextbox的代码折行,但是网上没有搜到,只看到了一个FastColoredTextBox还不支持中文,
这几天突然搜索文本编辑器看到一个编译器,SharpDevelop 5.1,然后看到里面有一个组件TextEditor,
试了试支持中文也能代码折行,所以有时候做不出来可以先放一放,指不定什么时候看到什么就做出来了。

/// <summary>
        /// @@ 折行
        /// </summary>
        /// <param name="document"></param>
        /// <param name="fileName"></param>
        /// <param name="parseInformation"></param>
        /// <returns></returns>
        public List<FoldMarker> GenerateFoldMarkers(IDocument document, string fileName, object parseInformation)
        {
            List<FoldMarker> list = new List<FoldMarker>();

            var startLines = new Stack<int>();

            for (int i = 0; i < document.TotalNumberOfLines; i++)
            {
                // Get the text of current line.
                string text = document.GetText(document.GetLineSegment(i));

                if (text.Trim().Length >= 2 && text.Trim().Substring(0, 2) == "@@") // Look for method starts
                {
                    if (flag == false)
                    {
                        if (startLines.Count > 0)
                        {
                            int start = startLines.Pop();
                            // 判断相邻两行是否都有标签
                            if (start == i - 1)
                            {
                                startLines.Push(start);
                            }
                            else
                            {
                                if (count < 30)
                                {
                                    list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i - 1, 57, FoldType.TypeBody, "...}", true));
                                }
                                else
                                {
                                    list.Add(new FoldMarker(document, start, document.GetLineSegment(start).Length, i - 1, 57, FoldType.TypeBody, "...}", false));
                                }
                                count++;
                            }

                        }

                        startLines.Push(i);
                    }
                    else
                    {
                        flag = false;
                        startLines.Push(i);
                    }
                }
            }

            return list;
        }

        private int count = 0;

        //是否是第一个标签
        private bool flag = true;

        /// <summary>
        /// 保存
        /// </summary>
        /// <param name="msg"></param>
        /// <param name="keyData"></param>
        /// <returns></returns>
        protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, Keys keyData)
        {
            if (keyData == (Keys.Control | Keys.S))
            {
                textEditor.SaveFile(filename);
                //return base.ProcessCmdKey(ref msg, keyData);
            }
            else if (keyData == Keys.F5)
            {
                textEditor.LoadFile(filename);
            }

            return base.ProcessCmdKey(ref msg, keyData);
        }
时间: 2024-10-29 19:07:56

ICSharpCode.TextEditor的相关文章

使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器

使用ICSharpCode.TextEditor制作一个语法高亮显示的XML编辑器 品高工作流 的流程模拟器中使用了一个具有语法高亮和折叠功能的XML编辑器,其核心就是用了SharpDevelop中的ICSharpCode.TextEditor控件,如下图所示: 序 SharpDevelop的源代码中有一个功能丰富,支持语法高亮,代码折叠的文本编辑器控件(位置:\SharpDevelop\src\Libraries\ICSharpCode.TextEditor).本文附件的Demo工程中将演示如

程序开发常用第三方类库一览表(VendorLib)

以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ---------------------------------------------------------------------------------------------------///////////////////////////////////////////////////JAVA第三方类库///////////////////////////////////////////////----------------

半自动代码生成--方式C#

寻找半自动代码生成方式基于C#的GUI或者其它: 1. Millennials - A Custom Source Code Generator  https://www.codeproject.com/articles/288283/millennials-a-custom-source-code-generator 2.Using ICSharpCode.TextEditor   https://www.codeproject.com/kb/edit/texteditorcontrol.as

收集.NET开发资源站点和部分优秀.NET开源项目

开源项目 DasBlog - 基于asp.net的博客引擎 Umbroca - ASP.NET CMS系统 BugTracker.NET—bug跟踪系统 ScrewTurn Wiki - ASP.NET维基引擎 RssBandit - 功能很强的Rss阅读器 SubText - 个人博客平台 .Net General 微软.Net中文主页 .NET Framework开发中心 微软.Net Framework中文产品支持中心 微软.Net Framework中文新闻组(Web) 微软VB.Net

SharpDevelop浅析_4_TextEditor_自动完成、代码折叠……

SharpDevelop浅析_4_TextEditor_自动完成.代码折叠…… SharpDevelop浅析_4_TextEditor_自动完成.代码折叠…… Parser及其应用: Code Completion, Method Insight, Class Scout ... 1.Demo界面及功能解释2.Parser实现概述3.Parser应用: MouseHover Tooltip4.Parser应用: CodeCompletion & MethodInsight5.Parser应用:

轻量级代码生成器-OnlyCoder 第二篇

最近利用业余时间将OnlyCoder又重新打造了一番,使其使用起来更简单.更顺手. 相关的帮助文档也已发布了版本. 界面改版,UI采用了DotNetBar2组件. 还是先看下UI效果吧. 由于使用了 ICSharpCode.TextEditor.TextEditorControl 控件,貌似与DotNetBar2 存在不兼容问题,还在解决中.只要不打开模板编辑器就不会出现闪退的情况. 重点说下项目管理: 可在这配置生成的项目信息,项目的中文名,英文名. 项目里面可配置表相关信息,例如表的前缀.格

我的开发助手之序

本人.net 程序猿一枚,平常最大的爱好就是coding ,尤其是对c#情有独衷,数年前,因为某个同事的一句话“大公司都有自己的代码框架,甚至是代码工具”,因为当时在一个小公司就职,而我也只是一个小小的团队带头人,心里就莫名有了一个想法,做一款代码工具,一款很有自我特色,从公司项目开发,到项目维护的代码助手,紧密贴合公司的开发框架和业务,甚至都想打上公司的LOGO,走哪里就让人看到这是我们公司自己的工具(当时我们经常会出差,去现场开发).之前也用过叫做动软代码生成器的工具,因此动软代码生成器就成

C# ICSharpCode.SharpZipLib

C# ICSharpCode.SharpZipLib.dll文件压缩和解压功能类整理,上传文件或下载文件很常用 工作中我们很多时候需要进行对文件进行压缩,比较通用的压缩的dll就是ICSharpCode.SharpZipLib.dll,废话不多了,网上也有很多的资料,我将其最常用的两个函数整理了一下,提供了一个通用的类,这样在工作中可以快速的完成压缩和解压缩的动作哦 官网下载地址:  http://www.icsharpcode.net/OpenSource/SharpZipLib/Downlo

C# 下利用ICSharpCode.SharpZipLib.dll实现文件/文件夹压缩、解压缩

ICSharpCode.SharpZipLib.dll下载地址 1.压缩某个指定目录下日志,将日志压缩到CompressionDirectory文件夹中,并清除原来未压缩日志. #region 压缩logs目录下日志 public static void CompresslogDic() { try { string logFilePath = AppDomain.CurrentDomain.BaseDirectory + "logs"; DirectoryInfo logsDic =