2017-01-12 7 views
0

Я хочу, чтобы открыть окно taglist только специально для файлов Cоткрытого окна taglist только для гр файлов

Если я ставлю следующую команду в моем .vimrc того окна открывается для всех файлов

let Tlist_Auto_Open=1 

Однако, когда я использовал autocmd на основе типа файла, он не открывается. Есть ли какая-то зависимость, которую я должен проверить?

autocmd FileType c,cpp,h,py let Tlist_Auto_Open=1 

Часть моей .vimrc выглядит, как показано ниже -

" Install pathogen 
execute pathogen#infect() 

set number      " Display Line Numbers   
set autoindent     " Auto-indenting    
set showmatch     " Highlight Matching brackets 
set tabstop=4     " Default tabstop value   
set shiftwidth=4 
set smarttab     " Enable smart tab    
set hlsearch     " highlight searched items  
set ignorecase     " ignore case when searching 
set smartcase     " ignore case if search pattern is all lowercase, case-sensitive otherwise 
" set scrolloff=999    "Start scrolling when we're 8 lines away from margins 

" No annoying sound on errors 
set noerrorbells 
set novisualbell 
set timeoutlen=500 

filetype plugin on 
filetype plugin indent on 
set ic 
autocmd filetype python set expandtab 

" Remove the trailing white-spaces in the C-file 
autocmd FileType c,cpp,h,py autocmd BufWritePre <buffer> %s/\s\+$//e 

" Unmap the tab-key in the taglist window. 
:autocmd BufEnter __Tag_List__ silent! nunmap <buffer> <Tab> 

" Syntax higlight for Groovy 
au BufRead,BufNewFile *.atc set filetype=groovy 


"""""""""""""""""""""""""""""""""" 
" Taglist configuration 
"""""""""""""""""""""""""""""""""" 
" 
" To automatically close the tags tree for inactive files. 
" let Tlist_File_Fold_Auto_Close = 1 

" Display only one file in taglist. 
let Tlist_Show_One_File = 1 

" Taglist window size 
let Tlist_WinWidth = 30 

" Open Taglist by default 
autocmd FileType c,cpp,h,py let Tlist_Auto_Open=1 

" Close VIM when only taglist window is open 
let Tlist_Exit_OnlyWindow = 1 

ответ

1

Это проблема времени. Плагин taglist оценивает конфигурацию Tlist_Auto_Open во время загрузки. В этот момент ваш ~/.vimrc был прочитан, но файл еще не открыт. Ваш :autocmd активируется только после того, как такой файл был :edit ed, и к тому времени инициализация taglist завершена. Кроме того, пока вы не отредактируете только один файл [type] в сеансе Vim, ваш подход привел бы к всем последующим файлам, открывающим taglist!

Таким образом, вы не можете использовать функцию конфигурации, предоставляемую taglist, но, к счастью, очень просто реализовать автоматическое включение плагина с помощью команды :TlistOpen. Просто измените свой autocmd:

:autocmd FileType c,cpp,h.py TlistOpen 
+0

большое спасибо за ваш ответ. Это работает, но имеет и другую проблему. Если я открою второй C-файл с помощью vim-буферов, он переключит окно taglist. может ли быть способ проверить, если он уже открыт? – Raj

+1

О, тогда используйте ': TlistOpen' вместо этого. Я, хотя ': Tlist' только открывается, так же как и': TlistToggle'. Кажется, что предположение было неправильным ... –

+1

Отлично! один вопрос-сторона. По умолчанию курсор находится в окне TList, возможно ли это сделать в открывшемся файле? Или это еще один вопрос? ;) – Raj