日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > 自寫vim插件ldoc.vim,提供智能的lua注釋代碼補全

自寫vim插件ldoc.vim,提供智能的lua注釋代碼補全

來源:程序員人生   發布時間:2015-01-20 08:34:00 閱讀次數:3529次
	LDoc是1個Lua的文檔生成工具,詳細介紹見LDoc的Github主頁,但是在vim中手寫注釋較為復雜,然后看了下vim script,自己寫了1款vim插件,用于自動生成模塊注釋,類型注釋和函數注釋,方便開發。將此文件命名為ldoc.vim放在~/.vim/plugin目錄下
	使用:將光標移動到需要注釋確當前行,然后在命令模式下,輸入LdocM,LdocT,LdocF分別進行模塊注釋,類型注釋和函數注釋,也可通過map自行映照快捷鍵
  1. 關于vim script的參考文檔  http://vimdoc.sourceforge.net/htmldoc/usr_41.html 
  1. 關于ldoc的介紹 http://keplerproject.github.io/luadoc/manual.html

" http://vimdoc.sourceforge.net/htmldoc/usr_41.html """"""""""""""""""""""""""""" " 工具函數 """"""""""""""""""""""""""""" function! s:warnMsg(msg) echohl WarningMsg echo a:msg echohl None endfunction " 插件重復性加載的沖突檢測 if exists("loaded_ldoc_ddc") call s:warnMsg("Ldoc Already Loaded!") finish endif let loaded_ldoc_ddc = 1 """"""""""""""""""""""""""""" " 全局注釋變量 """"""""""""""""""""""""""""" if !exists("g:ldoc_startBeginCommentTag") let g:ldoc_startBeginCommentTag = "----------------------------------------" endif if !exists("g:ldoc_startEndCommentTag") let g:ldoc_startEndCommentTag = "----------------------------------------" endif if !exists("g:ldoc_startNoteCommentTag") let g:ldoc_startNoteCommentTag = "--- " endif if !exists("g:ldoc_startFlagCommentTag") let g:ldoc_startFlagCommentTag = "-- " endif """"""""""""""""""""""""""""" " 全局標記狀態變量 """"""""""""""""""""""""""""" if !exists("g:ldoc_flagAuthor") let g:ldoc_flagAuthor = "@author " endif if !exists("g:ldoc_flagType") let g:ldoc_flagType = "@type " endif if !exists("g:ldoc_flagParam") let g:ldoc_flagParam = "@param " endif if !exists("g:ldoc_flagReturn") let g:ldoc_flagReturn = "@return " endif """"""""""""""""""""""""""""" " 寫入函數 " 詳細參見append函數,參數2可直接傳入列表 """"""""""""""""""""""""""""" function! s:writeToNextLine(str) call append(line("."), a:str) endfunction function! s:writeToPrevLine(str) call append(line(".")⑴, a:str) endfunction """"""""""""""""""""""""""""" " 模塊的注釋 """"""""""""""""""""""""""""" function! <SID>ldoc_moduleComment() if !exists("g:ldoc_authorName") let g:ldoc_authorName = input("輸入作者名:") endif let l:moduleDesc = input("輸入模塊的簡單說明(可直接回車,稍后填寫):") mark l let l:writeText = [g:ldoc_startBeginCommentTag] let l:markJump = 0 let l:str = g:ldoc_startNoteCommentTag if(strlen(l:moduleDesc) == 0) let l:markJump = 1 else let l:str = l:str . l:moduleDesc endif call add(l:writeText, l:str) call add(l:writeText, g:ldoc_startFlagCommentTag . g:ldoc_flagAuthor . g:ldoc_authorName) call add(l:writeText, g:ldoc_startEndCommentTag) call s:writeToPrevLine(l:writeText) if(l:markJump == 1) exec "normal " . (line(".") - len(l:writeText) + 1) . "G$" else exec "normal 'l" endif endfunction """"""""""""""""""""""""""""" " 類型的注釋 """"""""""""""""""""""""""""" function! <SID>ldoc_typeComment() let l:curLineStr = getline(line(".")) let l:typeNameList = matchlist(l:curLineStr, 'local[ ]+([a-zA-Z0⑼_]+)[ ]+') if(len(l:typeNameList) < 2) call s:warnMsg("獲得type失敗,call jncpp@qq.com") return endif let l:typeName = l:typeNameList[1] let l:typeDesc = input("輸入類型的簡單說明(可直接回車,稍后填寫):") mark l let l:writeText = [] let l:markJump = 0 let l:str = g:ldoc_startNoteCommentTag if(strlen(l:typeDesc) == 0) let l:markJump = 1 else let l:str = l:str . l:typeDesc endif call add(l:writeText, l:str) call add(l:writeText, g:ldoc_startFlagCommentTag . g:ldoc_flagType . l:typeName) call s:writeToPrevLine(l:writeText) if(l:markJump == 1) exec "normal " . (line(".") - len(l:writeText)) . "G$" else exec "normal 'l" endif endfunction """"""""""""""""""""""""""""" " 函數的注釋 """"""""""""""""""""""""""""" function! <SID>ldoc_functionComment() let l:curLineStr = getline(line(".")) let l:paramList = matchlist(l:curLineStr, 'function[ ]+([a-zA-Z0⑼_.:]+)[ ]*(([a-zA-Z0⑼_, .]*))') if(len(l:paramList) >= 2) else let l:paramList = matchlist(l:curLineStr, '([a-zA-Z0⑼_]+)[ ]*=[ ]*function[ ]*(([a-zA-Z0⑼_, .]*))') if(len(l:paramList) < 2) call s:warnMsg("獲得函數失敗,call jncpp@qq.com") return endif endif let l:funcName = l:paramList[1] if(len(l:paramList) > 3) let l:paramList = split(l:paramList[2], '[ ]*,[ ]*') let l:paramList2 = [] for l:ele in l:paramList call add(l:paramList2, substitute(l:ele, '[ ]+', "", "")) endfor endif mark l let l:funcDesc = input("輸入函數[" . l:funcName . "]的簡單說明(可直接回車,稍后填寫):") let l:writeText = [] let l:str = g:ldoc_startNoteCommentTag let l:markJump = 0 if(strlen(l:funcDesc) == 0) let l:markJump = 1 else let l:str = l:str . l:funcDesc endif call add(l:writeText, l:str) for l:ele in l:paramList2 let l:str = g:ldoc_startFlagCommentTag . g:ldoc_flagParam . l:ele let l:paramDesc = input("輸入參數[" . l:ele . "]的簡單說明:") if(strlen(l:paramDesc) > 0) let l:str = l:str . " " . l:paramDesc endif call add(l:writeText, l:str) endfor call s:writeToPrevLine(l:writeText) if(l:markJump == 1) exec "normal " . (line(".") - len(l:writeText)) . "G$" else exec "normal 'l" endif endfunction """"""""""""""""""""""""""""" " 快捷鍵映照 """"""""""""""""""""""""""""" command! -nargs=0 LdocM :call <SID>ldoc_moduleComment() command! -nargs=0 LdocT :call <SID>ldoc_typeComment() command! -nargs=0 LdocF :call <SID>ldoc_functionComment()


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 国产91免费视频 | 91精品国产91久久综合桃花 | 日韩av电影免费看 | 干片网在线 | 亚洲精品在线电影 | 日日日干干干 | 日韩在线观看视频免费 | 国产剧情自拍 | 国产亚洲精品久久久久久 | 亚洲人人| 综合久久久久 | 99久久久国产精品免费调教网站 | 在线观看国产视频 | 日韩视频区 | 91久久国产精品 | 久久精品| 国产精品高潮在线 | 成人久久久 | 午夜在线免费观看视频 | 久久精品中文字幕 | 中文字幕av免费 | 91精品国产日韩91久久久久久 | 国产午夜精品一区二区 | 亚洲精品1| 国产伦精品一区二区三区照片 | 久久久久夜夜夜精品国产 | 69视频免费看 | 亚洲综合精品 | 激情免费网址 | 欧美日韩电影一区二区三区 | 香蕉视频一区二区三区 | 麻豆亚洲| 九九九久久国产免费 | 久久一区精品 | 久久新视频 | 欧美jizz18 | av中文字幕第一页 | 黄色成人美女网站 | av免费看网站 | 中文字幕福利片 | 欧美日韩精品中文字幕 |