'iskeyword' に含まれる文字一覧
'iskeyword' や 'isfname' に含まれる文字一覧を見たいと思った。
これらのオプションの書式は、基本は簡単だけど、厳密に解釈しようとするとけっこう複雑なので、vim からソースを抜き出してコマンドを作ってみた。
http://www.k3.dion.ne.jp/~jod/src/dump-iskeyword.c
'iskeyword' のデフォルト値だとこんな感じ。
$ ./a.out '@,48-57,_,192-255' 0 1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z _ a b c d e f g h i j k l m n o p q r s t u v w x y z
いたって普通ですな。
gdb で STL コンテナの中身を表示する
こいつを使う。
http://www.stanford.edu/~afn/gdb_stl_utils/
gcc 3.4.2 では↓のように _M_impl を入れる必要があったけど。
- set $vec_size = $vec->_M_finish - $vec->_M_start + set $vec_size = $vec->_M_impl._M_finish - $vec->_M_impl._M_start
checktime ハック
vim はバッファを切り替えたときなどのタイミングで、ファイルが外部で変更されていないかを判定している。
mtime を見るのだと予想していたが、わざわざパーミッションも比較しているようだ。
--- ../src.orig/fileio.c Mon May 1 00:28:57 2006 +++ fileio.c Sun Dec 24 01:00:29 2006 @@ -6225,7 +6225,7 @@ && ((stat_res = mch_stat((char *)buf->b_ffname, &st)) < 0 || time_differs((long)st.st_mtime, buf->b_mtime) #ifdef HAVE_ST_MODE - || (int)st.st_mode != buf->b_orig_mode + //|| (int)st.st_mode != buf->b_orig_mode #else || mch_getperm(buf->b_ffname) != buf->b_orig_mode #endif
私はこんな感じ
au BufWritePost * if getline(1) =~ "^#!" | exe "silent !chmod +x % 2>/dev/null" | if &ft == "" | filetype detect | endif | endif
でスクリプトを保存したとき自動的に chmod +x していて、いちいち
W16: Warning: Mode of file "out" has changed since editing started
ときかれるのがうざかったので st_mode の比較をやめた。
この部分は :ta ex_checktime から追っていたらすぐ見つかった。