chained.vim つくった
相変わらずプラグイン名から機能がわからないんですが、先日つくったこれをちょっと書きなおしてプラグインにしてみました。
スクリプトローカル関数で SID を取得したり関数のコールスタックを取得できます。
まぁ一般ユーザにはあまり関係なさそうなプラグイン。
[使い方]
" スクリプトローカル関数で使用できる function! s:local_function_scope() " 関数名を取得 echo chained#function_name() " => homu_func " SID を取得 echo chained#SID() " => 404 " SNR を含んだ関数名の取得 echo chained#function_symbol() " => <SNR>404_homu_func " <SNR>{SID}_ の取得 echo chained#SNR() " => <SNR>404_ endfunction call s:local_function_scope() " グローバル関数の場合 function! g:global_function_scope() " 関数名を取得 echo chained#function_name() " => g:global_function_scope " SID は取得できない echo chained#SID() " => "" " chained#function_name() と同様 echo chained#function_symbol() " => g:global_function_scope endfunction call g:global_function_scope() " 変換 function! s:to_xxx() let symbol = chained#function_symbol() echo symbol " <SNR>404_to_xxx echo chained#to_function_name(symbol) " => to_xxx echo chained#to_SID(symbol) " => 404 echo chained#to_SNR(symbol) " => <SNR>404_ endfunction call s:to_xxx() " 関数の呼び出し履歴を取得 function! s:call_func4() " 呼び出し履歴 " 左から順番に呼ばれた関数のリスト echo chained#call_stack() " => ['<SNR>404_call_func1', '<SNR>404_call_func2', 'g:call_func3', '<SNR>404_call_func4'] " 1つ前の関数を取得する echo chained#called_func(1) " => g:call_func3 echo chained#called_func(0) " => <SNR>404_call_func4 endfunction function! g:call_func3() call s:call_func4() endfunction function! s:call_func2() call g:call_func3() endfunction function! s:call_func1() call s:call_func2() endfunction call s:call_func1()