Vim6スクリプトお勉強スレat UNIX
Vim6スクリプトお勉強スレ - 暇つぶし2ch898:名無しさん@お腹いっぱい。
07/07/30 19:37:54
スクリプトのローカル関数(s:func() or <SID>func())はVim内部では
<SNR>99_func()という名前(数字はスクリプト番号)のグローバル関数になってるんだけど
実は直接 :function <SNR>99_func() と書いて関数を定義できる。(:callもok)
だからスクリプトのローカル関数を外部から変更できてしまう。(ただしs:var変数にはアクセスできなさそう)
let sid = GetSid("plugin.vim") " redir + scriptnames で番号取得
function! <SNR>{sid}_func()
  ...
endfunction
名前が正しいかどうかはチェックしてないみたいなので存在しないスクリプト番号が使えたり番号指定がなくても大丈夫だったりする。
そんで、おそらくs:func()とかが使える関係で関数名にコロンが使えるようになってるけど
その辺の処理は適当らしくてhoge:func()とかfoo:bar:func()とかいう名前も使える。(変数名はダメらしい)
どちらもundocumentedな動作。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch