Сменить омниплект на лету, используя супертаб - PullRequest
1 голос
/ 29 ноября 2011

Я использую плагин supertab в vim.
Это мои настройки по умолчанию (в _vimrc)

let g:SuperTabDefaultCompletionType = '<c-x><c-k>'  -->(dictionary)  
let g:SuperTabRetainCompletionDuration = "completion"  
let g:SuperTabLongestEnhanced = 1  
let g:SuperTabLongestHighlight = 1  

Я создал этот скрипт, чтобы выбрать омникомплет с супертаб на лету:

function! SuperTabFunction()
  if !exists("WhatSuperTab")
    let WhatSuperTab = "SuperTab function?"
  endif
  if !exists("MenuSuperTab_choices")
    let MenuSuperTab_choices = "&Current page\n&Spellchecker\nSentence\nCode"
  endif
  let n = confirm(WhatSuperTab, MenuSuperTab_choices, "Question")
  if n == 1
    let g:SuperTabDefaultCompletionType = '<c-x><c-m>'
    so $VIM/vimfiles/plugin/supertab.vim
  elseif n == 2
    let g:SuperTabDefaultCompletionType = '<c-x><c-k>'
    so $VIM/vimfiles/plugin/supertab.vim
  elseif n == 3
    let g:SuperTabDefaultCompletionType = '<c-x><c-l>'
    so $VIM/vimfiles/plugin/supertab.vim
  elseif n == 4
    let g:SuperTabDefaultCompletionType = '<c-x><c-o>'
    so $VIM/vimfiles/plugin/supertab.vim
  else
    return ''
  endif
endfun 

  nmap <silent> <C-S-tab> :call SuperTabFunction()<CR>
  imap <silent> <C-S-tab>  <esc>:call SuperTabFunction()<CR>a

Когда я вызываю вышеуказанную функцию и выбираю pe «Предложение», я могу использовать супер вкладку для завершения предложений. Когда я снова вызываю вышеуказанную функцию и выбираю pe «Проверка правописания», правильному значению присваивается g: SuperTabDefaultCompletionType, но оно все равно заменяет предложения.

Что я не так сделал в этой функции?

1 Ответ

1 голос
/ 15 марта 2012

Вы пытались вызвать предоставленную функцию вместо непосредственного изменения глобальной переменной?

" SuperTabSetDefaultCompletionType(type) {{{
" Globally available function that users can use to set the default
" completion type for the current buffer, like in an ftplugin.
function! SuperTabSetDefaultCompletionType(type)
...