作者yoco315 (眠月)
看板Editor
標題[vim ] errormarker + AsyncCommand ?
時間Tue Nov 1 21:52:08 2011
errormarker
http://www.vim.org/scripts/script.php?script_id=1861
可以把 compile error 用 highlight 標示出來,而且 gvim 還附有 tooltip
圖示
http://mh21.piware.de/vim-error-markers-doxygen.png
AsyncCommand
http://www.vim.org/scripts/script.php?script_id=3431
可以在背景執行動作,執行完還可以把結果送回來
其中有一個 AsyncMake,可以在背景 make
make 結束以後錯誤會被讀入到 QuickFixList
=============================================================================
我現在希望把這兩個東西混合在一起用,
這樣比方說我只要按一下
<F5> 背景就在 make,
而且 make 完以後,錯誤也會自動被標示出來。
我把兩個 script 都裝起來了,不過卻沒有效果,
我爬了一下原始碼,發現 errormarker 是去 hook QuickFixCmd event,
augroup errormarker
autocmd QuickFixCmdPost make call <SID>SetErrorMarkers()
augroup END
然後呼叫 SetErrorMarkers() 函數,
但是 AsyncMake 好像不會觸發 QuickFixCmd event,
所以 errormarker 就沒有呼叫到 SetErrorMarkers() 函數,
我嘗試亂改了一下 script,不過沒有任何進展,主要也是因為我不太知道怎麼改,
不知道有沒有前輩願意投入一點時間嘗試看看?
=============================================================================
如果這邊能突破的話,
接下來我打算加上在背景每隔固定時間(或每次存檔)AsyncMake 一次的功能,
這樣就可以持續的讓畫面上顯示出錯誤的地方。
如果能作到的話,這樣會比 Eclipse CDT 的語意分析還要好,
因為 Eclipse CDT 的語意分析準確度並不是 100%,
尤其是在 template 頻繁使用的狀況下。
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 182.235.170.158
→ yoco315:超讚的XD現在每次存檔,vim就會自動紅字標出錯誤 11/02 12:20
→ yoco315:有空再寫一個中文版的 @@ 11/02 12:20
推 cwyuptt:感謝大神分享,只好收藏了! 11/02 15:14
→ yoco315:如果有發現蝦米問題請好心告訴我謝謝 11/05 02:18
推 cwyuptt:不好意思,不知道是不是我哪裡做錯了,存檔會有錯誤訊息 11/05 05:02
→ cwyuptt:Error detected while processing <SNR>16_AsyncMake: 11/05 05:05
→ cwyuptt:line 8: 11/05 05:06
→ cwyuptt:E117: Unknown function: asynchandler#quickfix 11/05 05:06
→ cwyuptt:E116: Invalid arguments for function asynccommand#run 11/05 05:06
→ cwyuptt:但是如果我手動執行 :make 的話,就可以自動標示出錯誤~ 11/05 05:08
→ yoco315:會不會是vim版本的問題?我好像曾經遇過... 11/06 01:49
→ yoco315:更新到最新版的 7.3 試試 11/06 01:50
推 cwyuptt:我的版本就是 7.3 的 XD,我再研究看看,感謝大大! 11/06 05:19
→ yoco315:我之前裝 vim 不行,後來改裝 vim-gtk 就可以了.. 11/06 17:29
→ yoco315:我也不知道為什麼 XD 11/06 17:29
推 cwyuptt:裝完 vim-gtk 之後,用 gvim 成功了,好棒的功能,謝謝! 11/07 02:45
→ yoco315:恭喜恭喜 XD 11/07 23:31