私は現在、C由来の言語で編集されている機能を示すために私のステータスバーに以下の罰金機能を追加しました:VIM:なぜこの機能はVIMに掛かっていますか?
set statusline+=%{WhatFunctionAreWeIn()}
fun WhatFunctionAreWeIn()
let strList = ["while", "foreach", "ifelse", "if else", "for", "if", "else", "try", "catch", "case"]
let foundcontrol = 1
let pos=getpos(".") " This saves the cursor position
let view=winsaveview() " This saves the window view
while (foundcontrol)
let foundcontrol = 0
" Go to the character before the last open {
normal [{
call search('\S','bW')
" If the character is a) then go to the character
" preceding the() section
let tempchar = getline(".")[col(".") - 1]
if (match(tempchar, ")") >=0)
normal %
call search('\S','bW')
endif
let tempstring = getline(".")
for item in strList
if(match(tempstring,item) >= 0)
let foundcontrol = 1
break
endif
endfor
if(foundcontrol == 0)
call cursor(pos)
call winrestview(view)
return tempstring
endif
endwhile
call cursor(pos)
call winrestview(view)
return tempstring
endfun
しかし、数分VIMがハングした後。関数を無効にするとハングするのを防ぐので、この関数が責任を負うと確信しています。 VIMをハングする可能性のあるものはありますか?ステータスバーに現在編集されている機能を表示するタスクを実行するためのより良い方法はありますか?
ありがとうございました。
これが見つかりました。 http://www.vim.org/scripts/script.php?script_id=610私は自分でそれを使用していないが、それはctagsに基づいているので、それは堅牢でなければならないと思う。 – Gowtham
Gowthamありがとうございますが、そのスクリプトはPHPファイルでは機能しません。配列が関数のカーソル位置の上に宣言されている場合は、関数ではなく配列の名前が表示されます。 – dotancohen
すべてのファイルタイプ、またはPHPだけがハングしますか?ハングアップを引き起こすファイルを提供できますか? –