Как я могу использовать Omni Completion от Vim с локальными классами Ruby? - PullRequest
0 голосов
/ 03 февраля 2012

Я использую Vim 7.3 исполняемыми файлами отсюда , чтобы предотвратить его сбой при вызове Omnicomplete) и Ruby 1.9.3-p0 .У меня также установлен Ruby 1.8.7, но это не в моем пути.У меня C:\Ruby193\bin в моем системном пути.Я могу использовать автозаполнение для объектов Ruby по умолчанию (например, g = "foo"; g.<tab> работает), но не могу использовать его для локальных классов или классов в буфере.

Этот ответ на вопрос сделалне помогло, к сожалению.

Единственные установленные мной драгоценные камни bigdecimal (1.1.0), io-console (0.3), json (1.5.4), minitest (2.5.1), qtbindings (4.6.3.4 x86-mingw32), rake (0.9.2.2), rdoc (3.9.4) и rubygems-update (1.8.15).Кроме запуска gem update --system и gem install qtbindings, все они должны быть настройками по умолчанию.

У меня установлены следующие плагины:

Я попытался удалить snipMate и SuperTab, чтобы посмотреть, смогу ли я заставить его работать, но безуспешно.

Это мой файл _vimrc, на случай, если что-то там вызывает проблему:

set nocompatible
syn enable "enable syntax highlighting
colorscheme peachpuff "yay my color scheme
set clipboard=unnamed "yanks go to clipboard
set nu "show line numbers
set lbr "line breaks on words if set nolist is run
set formatoptions=l
set wrap
set tabstop=4 "tabs are 4 characters long
set noexpandtab
set nosmarttab
set shellslash
set hidden " hide buffers instead of closing them
noremap <silent> <Space> :nohlsearch<Bar>:echo<CR>
set shiftwidth=4
source $VIMRUNTIME/vimrc_example.vim
source $VIMRUNTIME/mswin.vim
behave mswin
set backupdir=~/VIM_BACKUP

filetype plugin indent on

set list listchars=tab:\|_
" Enter the middle-dot by pressing Ctrl-k then .M
" Enter the right-angle-quote by pressing Ctrl-k then >>
" Enter the Pilcrow mark by pressing Ctrl-k then PI
" Extra options :dig
set list listchars=tab:»»,trail:·,extends:>
"set list listchars eol:¶


" Show the menu but not the toolbar
set guioptions=m

" 3 lines of buffer offset while scrolling:
set scrolloff=3

" Indent folding:
set nofoldenable
set fdm=indent

" Highlight current line
set cursorline

"Spell Checking:
set spell
set spelllang=en
set spellsuggest=9 "only show 9 suggestions

"Filename completion
"Complete longest, then each match, then show a list
set wildmode=longest,full,list

"Path for saving and loading
cd ~

set diffexpr=MyDiff()
function MyDiff()
    let opt = ''
    if &diffopt =~ 'icase' | let opt = opt . '-i ' | endif
    if &diffopt =~ 'iwhite' | let opt = opt . '-b ' | endif
    silent execute '\"!C:\Program Files\vim\diff\" -a ' . opt . v:fname_in . ' ' . v:fname_new . ' > ' . v:fname_out
endfunction

"SuperTab
 let g:SuperTabDefaultCompletionType = "context"
 let g:SuperTabContextDefaultCompletionType="<C-X><C-O>"

"snipMate
let g:snips_author = 'corvec'

"ruby
let g:ruby_path = ':C:\ruby193\bin'
if has('autocmd')
    autocmd filetype ruby set omnifunc=rubycomplete#Complete
    autocmd filetype ruby let g:rubycomplete_buffer_loading = 1
    autocmd filetype ruby let g:rubycomplete_classes_in_global = 1
    autocmd filetype ruby setlocal list
"    autocmd FileType ruby,eruby let g:rubycomplete_rails = 1
    autocmd filetype text colorscheme 
endif

Файл, который я тестировал, выглядит следующим образом:

class Giant
    attr :height, :weight
    def initialize(name)
        @name = name
        @height = 15
        @weight = 800
    end

    def description
        puts "#{@name} is a #{@height} foot tall, #{@weight} pound giant."
    end

    def talk
        puts "#{@name} says 'My name is #{@name}'"
    end

    def hello
        puts "#{@name} says 'Hello.'"
    end

    def goodbye
        puts "#{@name} throws a rock at you as you say goodbye. You die."
    end
end
g = Giant.new("Gary")
g.description
g.hello
g.

Когда я набираю <tab> или <C-X><C-O> после последней строки, я получаю сообщение в строке состояния: -- Omni completion (^O^N^P) Pattern not found, и завершение не работает.У меня сложилось впечатление, что этого должно быть достаточно для работы локального (и буферного) автозаполнения.Нужно ли устанавливать другой плагин?Если нет, то как мне заставить это работать?

...