• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 76,  comments - 621,  trackbacks - 0

            終于忍不住了,要為Megax加上語法加亮,我在正則還是lex上徘徊了大半年,始終沒有找到比較好的方法,一個編輯器如果支持非常嚴格的語法加亮的話,那么可配置性是相當的差的。像scintilla,你必須得寫個lex針對某種特定的語言才行。當然大多數的語言都有一些共性,比如你可以用c語言的語法文件去渲染java或者c#的。但是我不想這么做,我想要傻瓜也可以進行配置文件的編寫,像Editplus,但是Editplus做的不夠好。

            目前完成了塊狀代碼的識別,這是最關鍵的,什么是塊狀的呢,主要是下面這三種:

            1.注釋(單行,多行)
            2.字符串(可續行或者不可)
            3.子語言

            對于子語言這一塊,c++里面可以嵌入asm,html里面可以嵌入css和js,像這樣的語言,我把它定義成子語言。但是子語言不可嵌套,在Megax里面我不處理嵌套的子語言(PS:誰他媽的有病啊,這么寫)。

            完成上面這些,在遇到子語言的時候,只需要切換當前的schema就可以完成子語言的語法加亮,同時Megax定死了,最多支持4種sub language.

            識別完之后,在用正則分別進行細節匹配,比如c++里面里面的#[多個空格]include和#[無空格]include都是關鍵字,或者注釋里面含有email地址之類的。

            在進行行跳轉的時候,我們不需要識別這些,只需要識別塊狀的代碼,所以效率是非常的高,在我的機器上打開100萬行的代碼,跳轉到任意一行,均十分的流暢。

            先寫這么多了,下面這張截圖暫時沒有子語言的支持,上班時間偷偷寫的啊。

            另外高速自動換行基本實現了,效率和內存占用讓我很滿意,基本上沒有明顯的延遲,小勝Editplus。

            最近下了EMEditor的最新版本,EM做的是越來越強大了,基礎功能和架構我覺得應該是目前最棒的編輯器。在打開超大文件的時候,用內存映射之后,剩下的內存占用主要是行信息。在編輯的時候,我一直認為內存映射會非常的慢,看來我需要重新審視一下。思路就是這樣的,EM加載大文件的時候會啟動一個新的線程,線程的同步著實是個大問題,不是我擅長的啊。。。。

            周四回國了,好高興,回去要大吃一頓,想死我了。


            posted on 2008-06-23 18:17 megax 閱讀(1991) 評論(4)  編輯 收藏 引用
            久久精品亚洲AV久久久无码| 国产精品久久午夜夜伦鲁鲁| 亚洲精品99久久久久中文字幕| 性高朝久久久久久久久久| 久久久久久精品久久久久| 色综合久久无码五十路人妻| 2021久久国自产拍精品| 国产精品久久久99| 久久天天躁夜夜躁狠狠| AV无码久久久久不卡网站下载| 精品久久久久久无码人妻蜜桃| 91麻豆国产精品91久久久| 日本三级久久网| 婷婷五月深深久久精品| 天堂无码久久综合东京热| 性欧美丰满熟妇XXXX性久久久 | 精品免费久久久久国产一区| 亚洲精品97久久中文字幕无码| 狠色狠色狠狠色综合久久| 久久天天躁狠狠躁夜夜不卡| 久久国产精品免费一区二区三区| 色妞色综合久久夜夜| 国内精品久久久久久久影视麻豆| 一本久久知道综合久久| 亚洲国产成人久久综合碰| 香蕉久久一区二区不卡无毒影院| 一本色道久久88—综合亚洲精品| 污污内射久久一区二区欧美日韩| 精品国产91久久久久久久| 无码人妻精品一区二区三区久久久| 亚洲精品tv久久久久久久久久| 久久久不卡国产精品一区二区| 99久久精品免费看国产一区二区三区 | 狠狠久久亚洲欧美专区| 婷婷久久久亚洲欧洲日产国码AV | 欧洲精品久久久av无码电影 | 国内精品伊人久久久久777| 精品久久久一二三区| 精品久久久久久久国产潘金莲 | 久久久亚洲欧洲日产国码二区| 久久久久国产精品人妻|