亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? namespaces.vim

?? vim的自動(dòng)配置文件
?? VIM
?? 第 1 頁 / 共 2 頁
字號(hào):
" Description: Omni completion script for cpp files" Maintainer:  Vissale NEANG" Last Change: 25 jun 2006let g:omni#cpp#namespaces#CacheResolve = {}let g:omni#cpp#namespaces#CacheUsing = {}" TODO: For the next release"let g:omni#cpp#namespaces#CacheAlias = {}" Get the using namespace list from a linefunction! s:GetNamespaceAliasListFromLine(szLine)    let result = {}    let tokens = omni#cpp#tokenizer#Tokenize(a:szLine)    let szAlias = ''    let szNamespace = ''    let state = 0    for token in tokens        if state==0            let szAlias = ''            let szNamespace = ''            if token.value == '/*'                let state = 1            elseif token.value == '//'                " It's a comment                let state = -1                break            elseif token.value == 'namespace'                let state = 2            endif        elseif state==1            if token.value == '*/'                let state=0            endif        elseif state==2            if token.kind == 'cppWord'                let szAlias .= token.value                let state = 3            else                let state = -1                break            endif        elseif state == 3            if token.value == '='                let state = 4            else                let state = -1                break            endif        elseif state == 4            if token.value == '::'                let szNamespace .= token.value                let state = 5            elseif token.kind == 'cppWord'                let szNamespace .= token.value                let state = 6                " Maybe end of tokens            endif        elseif state==5            if token.kind == 'cppWord'                let szNamespace .= token.value                let state = 6                " Maybe end of tokens            else                " Error, we can't have 'namespace ALIAS = Something::'                let state = -1                break            endif        elseif state==6            if token.value == '::'                let szNamespace .= token.value                let state = 5            else                call extend(result, {szAlias : szNamespace})                let state = 0            endif        endif    endfor    if state == 6        call extend(result, {szAlias : szNamespace})    endif    return resultendfunc" Get the using namespace list from a linefunction! s:GetNamespaceListFromLine(szLine)    let result = []    let tokens = omni#cpp#tokenizer#Tokenize(a:szLine)    let szNamespace = ''    let state = 0    for token in tokens        if state==0            let szNamespace = ''            if token.value == '/*'                let state = 1            elseif token.value == '//'                " It's a comment                let state = -1                break            elseif token.value == 'using'                let state = 2            endif        elseif state==1            if token.value == '*/'                let state=0            endif        elseif state==2            if token.value == 'namespace'                let state = 3            else                " Error, 'using' must be followed by 'namespace'                let state = -1                break            endif        elseif state==3            if token.value == '::'                let szNamespace .= token.value                let state = 4            elseif token.kind == 'cppWord'                let szNamespace .= token.value                let state = 5                " Maybe end of tokens            endif        elseif state==4            if token.kind == 'cppWord'                let szNamespace .= token.value                let state = 5                " Maybe end of tokens            else                " Error, we can't have 'using namespace Something::'                let state = -1                break            endif        elseif state==5            if token.value == '::'                let szNamespace .= token.value                let state = 4            else                call extend(result, [szNamespace])                let state = 0            endif        endif    endfor    if state == 5        call extend(result, [szNamespace])    endif    return resultendfunc" Get the namespace list from a namespace mapfunction! s:GetUsingNamespaceListFromMap(namespaceMap, ...)    let stopLine = 0    if a:0>0        let stopLine = a:1    endif    let result = []    let keys = sort(keys(a:namespaceMap), 'omni#common#utils#CompareNumber')    for i in keys        if stopLine != 0 && i > stopLine            break        endif        call extend(result, a:namespaceMap[i])    endfor    return resultendfunc" Get global using namespace list from the current bufferfunction! omni#cpp#namespaces#GetListFromCurrentBuffer(...)    let namespaceMap = s:GetAllUsingNamespaceMapFromCurrentBuffer()    let result = []    if namespaceMap != {}        let result = s:GetUsingNamespaceListFromMap(namespaceMap, (a:0 > 0)? a:1 : line('.'))    endif    return resultendfunc" Get global using namespace map from the current buffer and include files recursivelyfunction! s:GetAllUsingNamespaceMapFromCurrentBuffer(...)    let includeGuard = (a:0>0)? a:1 : {}    let szFilePath = omni#cpp#utils#ResolveFilePath(getreg('%'))    let namespaceMap = {}    if has_key(includeGuard, szFilePath)        return namespaceMap    else        let includeGuard[szFilePath] = 1    endif    let namespaceMap = omni#cpp#namespaces#GetMapFromCurrentBuffer()    if g:OmniCpp_NamespaceSearch != 2        " We don't search included files if OmniCpp_NamespaceSearch != 2        return namespaceMap    endif    for inc in omni#cpp#includes#GetList()        let lnum = inc.pos[0]        let tmpMap = s:GetAllUsingNamespaceMapFromFile(inc.include, includeGuard)        if tmpMap != {}            if has_key(namespaceMap, lnum)                call extend(namespaceMap[lnum], s:GetUsingNamespaceListFromMap(tmpMap))            else                let namespaceMap[lnum] = s:GetUsingNamespaceListFromMap(tmpMap)            endif        endif    endfor    return namespaceMapendfunc" Get global using namespace map from a file and include files recursivelyfunction! s:GetAllUsingNamespaceMapFromFile(szFilePath, ...)    let includeGuard = {}    if a:0 >0        let includeGuard = a:1    endif    let szFilePath = omni#cpp#utils#ResolveFilePath(a:szFilePath)    let namespaceMap = {}    if has_key(includeGuard, szFilePath)        return namespaceMap    else        let includeGuard[szFilePath] = 1    endif    " If g:OmniCpp_NamespaceSearch == 1 (search namespaces only in the current    " buffer) we don't use cache for the current buffer    let namespaceMap = omni#cpp#namespaces#GetMapFromBuffer(szFilePath, g:OmniCpp_NamespaceSearch==1)    if g:OmniCpp_NamespaceSearch != 2        " We don't search included files if OmniCpp_NamespaceSearch != 2        return namespaceMap    endif    for inc in omni#cpp#includes#GetList(szFilePath)        let lnum = inc.pos[0]        let tmpMap = s:GetAllUsingNamespaceMapFromFile(inc.include, includeGuard)        if tmpMap != {}            if has_key(namespaceMap, lnum)                call extend(namespaceMap[lnum], s:GetUsingNamespaceListFromMap(tmpMap))            else                let namespaceMap[lnum] = s:GetUsingNamespaceListFromMap(tmpMap)            endif        endif    endfor    return namespaceMapendfunc" Get global using namespace map from a the current bufferfunction! omni#cpp#namespaces#GetMapFromCurrentBuffer()    let namespaceMap = {}    let originalPos = getpos('.')    call setpos('.', [0, 1, 1, 0])    let curPos = [1,1]    while curPos != [0,0]        let curPos = searchpos('\C^using\s\+namespace', 'W')        if curPos != [0,0]            let szLine = getline('.')            let startPos = curPos[1]            let endPos = match(szLine, ';', startPos-1)            if endPos!=-1                " We get the namespace list from the line                let namespaceMap[curPos[0]] = s:GetNamespaceListFromLine(szLine)            endif        endif    endwhile    call setpos('.', originalPos)    return namespaceMapendfunc" Get global using namespace map from a filefunction! omni#cpp#namespaces#GetMapFromBuffer(szFilePath, ...)    let bUpdate = 0    if a:0 > 0        let bUpdate = a:1    endif    let szFilePath = omni#cpp#utils#ResolveFilePath(a:szFilePath)    if !bUpdate && has_key(g:omni#cpp#namespaces#CacheUsing, szFilePath)        return copy(g:omni#cpp#namespaces#CacheUsing[szFilePath])    endif    let namespaceMap = {}    " The file exists, we get the global namespaces in this file    let szFixedPath = escape(szFilePath, g:omni#cpp#utils#szEscapedCharacters)    execute 'silent! lvimgrep /\C^using\s\+namespace/gj '.szFixedPath    " key = line number    " value = list of namespaces    let listQuickFix = getloclist(0)    for qf in listQuickFix        let szLine = qf.text        let startPos = qf.col        let endPos = match(szLine, ';', startPos-1)        if endPos!=-1            " We get the namespace list from the line            let namespaceMap[qf.lnum] = s:GetNamespaceListFromLine(szLine)        endif    endfor    if szFixedPath != ''        let g:omni#cpp#namespaces#CacheUsing[szFixedPath] = namespaceMap    endif    return copy(namespaceMap)endfunc" Get the stop position when searching for local variablesfunction! s:GetStopPositionForLocalSearch()    " Stop position when searching a local variable    let originalPos = getpos('.')    let origPos = originalPos[1:2]    let stopPosition = origPos    let curPos = origPos    while curPos !=[0,0]        let stopPosition = curPos        let curPos = searchpairpos('{', '', '}', 'bW', g:omni#cpp#utils#expIgnoreComments)    endwhile    call setpos('.', originalPos)    return stopPositionendfunc" Get namespaces alias used at the cursor postion in a vim buffer" Note: The result depends on the current cursor position" @return"   -   Map of namespace aliasfunction! s:GetNamespaceAliasMap()    " We store the cursor position because searchpairpos() moves the cursor    let result = {}    let originalPos = getpos('.')    let origPos = originalPos[1:2]    let stopPos = s:GetStopPositionForLocalSearch()    let stopLine = stopPos[0]    let curPos = origPos    let lastLine = 0     let nextStopLine = origPos[0]    let szReAlias = '\Cnamespace\s\+\w\+\s\+='    while curPos !=[0,0]        let curPos = searchpos('}\|\('. szReAlias .'\)', 'bW',stopLine)        if curPos!=[0,0] && curPos[0]!=lastLine            let lastLine = curPos[0]            let szLine = getline('.')            if origPos[0] == curPos[0]                " We get the line until cursor position                let szLine = szLine[:origPos[1]]            endif            let szLine = omni#cpp#utils#GetCodeFromLine(szLine)            if match(szLine, szReAlias)<0                " We found a '}'                let curPos = searchpairpos('{', '', '}', 'bW', g:omni#cpp#utils#expIgnoreComments)            else                " We get the namespace alias from the line                call extend(result, s:GetNamespaceAliasListFromLine(szLine))                let nextStopLine = curPos[0]            endif        endif    endwhile    " Setting the cursor to the original position    call setpos('.', originalPos)    call s:ResolveAliasKeys(result)    return resultendfunc" Resolve an alias" eg: namespace IAmAnAlias1 = Ns1" eg: namespace IAmAnAlias2 = IAmAnAlias1::Ns2" => IAmAnAlias2 = Ns1::Ns2function! s:ResolveAliasKey(mapNamespaceAlias, szAlias)    let szResult = a:mapNamespaceAlias[a:szAlias]    " ::Ns1::Ns2::Ns3 => ['Ns1', 'Ns2', 'Ns3']    let listNamespace = split(szResult, '::')    if len(listNamespace)        " szBeginPart = 'Ns1'        let szBeginPart = remove(listNamespace, 0)        " Is 'Ns1' an alias ?        if has_key(a:mapNamespaceAlias, szBeginPart) && szBeginPart != a:szAlias            " Resolving alias 'Ns1'            " eg: Ns1 = NsResolved            let szResult = s:ResolveAliasKey(a:mapNamespaceAlias, szBeginPart)            " szEndPart = 'Ns2::Ns3'            let szEndPart = join(listNamespace, '::')            if szEndPart != ''                " Concatenation => szResult = 'NsResolved::Ns2::Ns3'                let szResult .= '::' . szEndPart            endif        endif    endif    return szResultendfunc" Resolve all keys in the namespace alias mapfunction! s:ResolveAliasKeys(mapNamespaceAlias)    let mapNamespaceAlias = a:mapNamespaceAlias    call map(mapNamespaceAlias, 's:ResolveAliasKey(mapNamespaceAlias, v:key)')endfunc" Resolve namespace aliasfunction! omni#cpp#namespaces#ResolveAlias(mapNamespaceAlias, szNamespace)    let szResult = a:szNamespace    " ::Ns1::Ns2::Ns3 => ['Ns1', 'Ns2', 'Ns3']    let listNamespace = split(a:szNamespace, '::')    if len(listNamespace)        " szBeginPart = 'Ns1'

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美va亚洲va香蕉在线 | 亚洲无人区一区| aaa亚洲精品| 一级中文字幕一区二区| 日韩一区二区在线免费观看| 99久久国产综合精品女不卡| 久久精品99久久久| 一区二区三区在线播放| 日韩一级片网址| 久久久另类综合| 国产91丝袜在线18| 国产精品日韩成人| 国产在线观看免费一区| 欧美一二三在线| 国产激情一区二区三区四区 | 99久久综合狠狠综合久久| 亚洲一区二区成人在线观看| 久久精品一区二区三区av| 欧美精品自拍偷拍| 91丨porny丨中文| 国产精品18久久久久久久久| 日本aⅴ精品一区二区三区| 亚洲黄色片在线观看| 欧美激情自拍偷拍| 久久久久久久久蜜桃| 亚洲二区视频在线| 亚洲三级在线播放| 国产性天天综合网| 久久久久久久久久美女| 精品久久久久久久久久久久包黑料| 欧美视频在线一区| 在线观看91精品国产入口| 99久久精品国产精品久久| 成人一区在线看| 国产成人啪午夜精品网站男同| 久久er99热精品一区二区| 日韩和欧美一区二区| 午夜精品一区在线观看| 亚洲成av人片一区二区| 日韩三级伦理片妻子的秘密按摩| 国产1区2区3区精品美女| 日韩高清不卡在线| 亚瑟在线精品视频| 亚洲国产成人91porn| 亚洲综合一区在线| 亚洲综合无码一区二区| 亚洲美女淫视频| 18成人在线观看| 国产午夜精品一区二区三区四区| 欧美一区二区不卡视频| 欧美三级午夜理伦三级中视频| 国产专区欧美精品| 日韩福利电影在线| 成人av动漫网站| 国产麻豆精品95视频| 毛片基地黄久久久久久天堂| 日本aⅴ精品一区二区三区| 首页国产欧美日韩丝袜| 亚洲国产综合91精品麻豆| 亚洲自拍欧美精品| 一区二区三区蜜桃网| 亚洲你懂的在线视频| 亚洲伦在线观看| 亚洲在线中文字幕| 亚洲制服丝袜av| 石原莉奈一区二区三区在线观看 | 91国产丝袜在线播放| 99久久久国产精品免费蜜臀| 91在线免费视频观看| 91色九色蝌蚪| 欧美综合亚洲图片综合区| 欧美自拍偷拍午夜视频| 欧美日韩一区二区三区四区五区| 欧美日韩免费一区二区三区| 91.成人天堂一区| 日韩精品一区在线| 久久看人人爽人人| 欧美一区国产二区| 亚洲成人资源在线| 蜜桃视频第一区免费观看| 国产一区二区免费视频| 91亚洲资源网| 91麻豆精品国产91久久久久久| 欧美一区二区性放荡片| 精品国产精品一区二区夜夜嗨| 国产欧美日产一区| 亚洲午夜精品在线| 日韩高清不卡一区| 99久久777色| 9191成人精品久久| 国产午夜三级一区二区三| 亚洲天堂a在线| 日日摸夜夜添夜夜添精品视频 | 欧美成人精品1314www| 亚洲国产精品激情在线观看| 一区二区三区四区视频精品免费 | 亚洲欧洲精品一区二区精品久久久| 亚洲精品乱码久久久久久日本蜜臀| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 精品国产精品网麻豆系列 | 美腿丝袜亚洲色图| av动漫一区二区| 欧美一区二区福利视频| 国产欧美一区二区精品婷婷| 亚洲成人综合视频| 成人国产精品视频| 777久久久精品| 国产精品久久久久久久久搜平片 | 欧美日本韩国一区二区三区视频 | 色综合色综合色综合| 欧美一区二区三区在线电影| 国产精品免费网站在线观看| 日韩成人精品在线| aaa欧美色吧激情视频| 日韩欧美综合在线| 亚洲欧美另类在线| 亚洲综合视频网| 韩国三级在线一区| 在线观看日产精品| 日本一区二区三区高清不卡| 亚洲综合免费观看高清完整版| 国产一区二区美女诱惑| 欧美日本高清视频在线观看| 欧美经典三级视频一区二区三区| 天天色综合天天| 99国产精品久久久久久久久久久| 欧美日韩一级片网站| 成人免费在线视频观看| 激情久久五月天| 3atv一区二区三区| 一区二区三区精品在线观看| 国产成人日日夜夜| 精品国产3级a| 日韩精品亚洲专区| 欧美午夜一区二区三区免费大片| 国产精品久久久久影院亚瑟| 国产自产v一区二区三区c| 日韩欧美一级精品久久| 亚洲精品一二三四区| 日本高清不卡视频| 中文字幕在线观看一区二区| 国产丶欧美丶日本不卡视频| 精品伦理精品一区| 免费黄网站欧美| 91超碰这里只有精品国产| 亚洲乱码中文字幕| www.欧美.com| 中文欧美字幕免费| 国产成人啪免费观看软件 | 欧美午夜电影一区| 亚洲精品国产视频| 色综合久久九月婷婷色综合| 国产大陆亚洲精品国产| 日韩欧美另类在线| 蜜臀av性久久久久蜜臀aⅴ| 欧美精品国产精品| 亚洲国产美女搞黄色| 欧美日韩精品一区二区三区蜜桃 | 中文字幕欧美国产| 国内国产精品久久| 欧美国产1区2区| a亚洲天堂av| 亚洲免费在线播放| 欧美在线视频你懂得| 亚洲国产一区二区三区青草影视| 欧美综合欧美视频| 五月激情六月综合| 日韩精品一区二区三区在线观看| 久久精品国产网站| 久久精品男人天堂av| 国产成人8x视频一区二区| 日本一区二区三区免费乱视频| 岛国一区二区三区| 亚洲精品你懂的| 欧美日韩一级大片网址| 日韩成人一级大片| 国产无一区二区| 国产麻豆精品theporn| 久久久久久久久久看片| 99久久精品国产一区二区三区| 亚洲午夜一区二区| 久久网站热最新地址| 91婷婷韩国欧美一区二区| 婷婷中文字幕综合| 久久久天堂av| 欧美亚洲免费在线一区| 日本亚洲最大的色成网站www| 日韩一区二区三区视频在线| 国产乱人伦精品一区二区在线观看| 国产精品免费看片| 欧美精品第一页| 国产成人精品影视| 亚洲国产aⅴ成人精品无吗| 久久综合资源网| 欧美中文字幕不卡| 一区二区三区高清在线| 国产欧美一区二区三区网站| 欧美性大战久久久久久久| 国产一区二区精品久久99| 亚洲激情成人在线|