經(jīng)過(guò)數(shù)天的艱苦奮戰(zhàn),終于添加了對(duì)多選區(qū)的支持。
幸虧我從最開(kāi)始就考慮了這個(gè)東西,不然還真有點(diǎn)麻煩。尤其是對(duì)現(xiàn)有的source進(jìn)行抽象重構(gòu)。
單選,列選都劃為多選的一種。
單選就簡(jiǎn)單的執(zhí)行普通選擇。
列選嘛,就是行連續(xù)的多選。
雖然都是多選的一種,不過(guò)我仍然做了區(qū)分, nomal selection, column selection和multiple selection。
主要是為了方便外部程序調(diào)用。
不過(guò),我未實(shí)現(xiàn)多個(gè)重疊/相鄰選區(qū)的合并操作。實(shí)現(xiàn)這個(gè)需要對(duì)集合做一個(gè)交集的處理,太麻煩了。
而且似乎也沒(méi)有存在的必要,遂省略之。如果探測(cè)到重疊,為了安全起見(jiàn),直接消掉全部選區(qū)。
重疊選區(qū)的存在是非常危險(xiǎn)的,因?yàn)閷?duì)重疊選區(qū)的操作是很詭異的。
明日 or 后日 release? (⊙o⊙)…我得好好休息了!
本質(zhì)上,普通選擇和列選擇都是多選區(qū)的特例。
理想的情況是多個(gè)選區(qū)之間應(yīng)該沒(méi)有交集。
對(duì)多個(gè)選區(qū)可以執(zhí)行拷貝,插入,刪除操作。這樣sinppt的替換操作就很自然了。
mark一下。
前兩天在godaddy上把域名買(mǎi)了www.fantype.net
被分到新加坡機(jī)房了。。暈!
可能看我的是日本的IP地址吧。
1.美化了圖片,從ue上拷貝的。
2.優(yōu)化了查找和替換。不過(guò)replace all還是有點(diǎn)問(wèn)題,放放在整。
查找和替換的實(shí)現(xiàn)是很有技巧性的,不能蠻干。以后還要往上接增量查找。代碼一定要漂亮,不然來(lái)看的動(dòng)力都沒(méi)有了。
3.添加了一個(gè)Line Highlight接口,像查找高亮,語(yǔ)法拼寫(xiě)檢查,這些東西,都使用該接口,獨(dú)立出來(lái)。
你可以在查找勾選加亮,就看到效果了。
下一步,要解決的是replace all.
下個(gè)版本爭(zhēng)取把hunspell裝上去。lexer, tab trigger打算用腳本來(lái)做。
說(shuō)到腳本,我覺(jué)得我的想法最簡(jiǎn)單,我已經(jīng)實(shí)踐過(guò)了,可行!
操作可以簡(jiǎn)單的分為2種,Command和Event。command就是鍵盤(pán),菜單,toolbar之類(lèi)所產(chǎn)生的WM_COMMAND。
event是當(dāng)發(fā)生特定操作的時(shí)候,所定義的事件。比如文件打開(kāi)關(guān)閉之類(lèi)的。
腳本端可以簡(jiǎn)單的定義一個(gè)function,然后bindcommand(id, func)或者bindevent(id, func)這樣的方式添加就行了。
嗯,不能想的太多了,要不然又得胎死腹中。還是先做好下個(gè)簡(jiǎn)單版本吧。
下載:
點(diǎn)我下載
查找和替換真是麻煩至極。
普通模式還好,比較簡(jiǎn)單。
正則需要考慮行頭和行尾模式,也就是^和$。還有換行符\n。
由此會(huì)產(chǎn)生行數(shù)的變化。在加上光標(biāo)位置的考慮,會(huì)讓人崩潰。
測(cè)試了一下,editplus未實(shí)現(xiàn)上述模式,scite系和vim也不行,hidemaru和emeditor也只是實(shí)現(xiàn)一小部分。
....繼續(xù)考慮中
查找,替換完成,支持正則。
目前還不支持多行替換,只是簡(jiǎn)單的按行遍歷替換而已。查找的時(shí)候,可以高亮當(dāng)前文件的匹配。
右鍵菜單,折疊所選。
目前這個(gè)程序還是比較小巧的。爭(zhēng)取KO掉notepad2之流的wrapper.
可以動(dòng)態(tài)更改encoding和eol,點(diǎn)擊狀態(tài)欄會(huì)出來(lái)菜單。
雖然目前還沒(méi)啥特色,不過(guò)還好核心性能非常棒,我覺(jué)得。至少完美支持各種字符,占用內(nèi)存非常少(假設(shè)你不做變態(tài)的操作)
intype現(xiàn)在半死不活的,e-textedi我不認(rèn)為它會(huì)有前途——巨慢&特浪費(fèi)內(nèi)存。
textmate到現(xiàn)在,內(nèi)核還未能夠完美支持中日韓文,總言而之,還有機(jī)會(huì)!
下一版本,更新一下toolbar和菜單。在下一步就是往上裝lexer之類(lèi)的。
點(diǎn)這里下載。
/Files/megax/FanType20110512.zip
前些日子,集成了Lua,做了一個(gè)自以為很棒的架構(gòu)。
最后糾結(jié)于可拖放式Tab的時(shí)候,究竟是多個(gè)Lua instance還是單個(gè)中,糾結(jié)的頭疼。媽的!
另外同步做了一個(gè)Lite版本。做到查找這兒了!
爭(zhēng)取常更新
核心被封裝成了標(biāo)準(zhǔn)控件,類(lèi)名為FTEDIT32, 任何工具只要可以創(chuàng)建window,就可以使用。我在vb里面測(cè)試了一下,可以使用,很方便。
另外,哈哈,改名了,叫fantype,上一篇帖子一個(gè)網(wǎng)友起的,覺(jué)得名字挺短,還未被注冊(cè),過(guò)幾天我得趕緊注冊(cè)去。
/Files/megax/Release20110509.zipps: cppblog的博客后臺(tái)真是難用啊,打算godaddy買(mǎi)一個(gè)去!
全盤(pán)script化之后,配置文件少多了,思路也清晰了。不過(guò)也越來(lái)越像vim了。
.主菜單和上下文菜單完全可以自定義,并且可以自定義自己的函數(shù)。
.快捷鍵也完全自定義,不過(guò)目前只有一個(gè)全局快捷HACCEL.將來(lái)應(yīng)該每一個(gè)control有一個(gè)快捷鍵句柄,在加上一個(gè)全局的。
到現(xiàn)在為止模仿vim和emacs的操作應(yīng)該是好無(wú)問(wèn)題了。
摘要: 首先說(shuō),這篇文章是很久很久很久以前寫(xiě)的,后來(lái)覺(jué)得沒(méi)啥技術(shù)含量,就沒(méi)發(fā)。今天放到這兒賺個(gè)眼球,主要目的還是征名,CPPBLOG網(wǎng)友一定要給力哦!
征名:
1. LiteEdit
2. EditLite
3. EverEdit
4. EditWin
5. MegaxEdit
閱讀全文
摘要: 首先,對(duì)于下面的文字你可以盡情的噴,不過(guò)還是建議你留下聯(lián)系方式,以便我能和你做進(jìn)一步探討。現(xiàn)在這個(gè)進(jìn)度雖然不具備發(fā)布的條件,不過(guò)還是放上來(lái)獻(xiàn)丑吧。
歷時(shí)數(shù)月大幅強(qiáng)化了內(nèi)核功能,目前已經(jīng)可以很流暢的編輯大文件了,并且只占用較低的內(nèi)存。打開(kāi)一般文件的時(shí)候,所使用內(nèi)存也大幅降低,同時(shí)也提高了批量命令的執(zhí)行效率。當(dāng)然除了內(nèi)核,目前還談不上什么外圍功能。只實(shí)現(xiàn)了查找、替換、打開(kāi)、保存、關(guān)閉、編碼探測(cè)、多窗口切換、DockWindow、窗口分割、bs/js腳本嵌入等等。附件中的版本應(yīng)該會(huì)有很多問(wèn)題,在以后的日子里,我的主要工作是讓其穩(wěn)定。
內(nèi)核功能主要有以下特色:
閱讀全文
以動(dòng)態(tài)內(nèi)存保存style,大幅降低內(nèi)存占用。
采用多線程SDI.
實(shí)現(xiàn)了輕量級(jí)TagList,和VIM那個(gè)看起來(lái)差不多吧。
順便實(shí)現(xiàn)了列插入、刪除
編輯大文件時(shí),采用了SwapFile
完美集成VBS
--------------------------------
MegaxEdit打算換個(gè)名字,我看中的那個(gè)域名好像還沒(méi)被注冊(cè)。。。。
一個(gè)很可能成為4塊錢(qián)盜版盤(pán)中的軟件,莫非要從我手中產(chǎn)生。。。。。期待中
1點(diǎn)了,睡嘍。