O formato python do Vim usando o formato form / prg (gq) fornece resultados incorretos

0

Estou tendo problemas com a interação do Python com comentários. Estes podem ser divididos em dois problemas. Espero que eles estejam relacionados, então vou postar os dois aqui.

Edição 1.

Ao usar o gq para quebrar automaticamente o código Python, o resultado é errado. Por exemplo, dado isto:

# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim 
# veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
# commodo consequat. Duis aute irure dolor in reprehenderit in voluptate 

Selecionando e executando o gq dá:

# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim #
veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea #
commodo consequat. Duis aute irure dolor in reprehenderit in voluptate

Por outro lado, executar a mesma coisa em YAML ou Coffee-script fornece:

# Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
# tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim
# veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea
# commodo consequat. Duis aute irure dolor in reprehenderit in voluptate

Espera-se que as regras de comentários do Python sigam os mesmos princípios do Coffee-script ou do YAML ou outras que possuam comentários de linha baseados em # .

Edição 2.

Iniciar um comentário faz com que o cursor salte para o início da linha, quando deve continuar na profundidade atual.

Por exemplo:

class Hello(object):
   """Something"""
# The comment starts here

# or worse
  def hi(self):
# again, here
      pass

Isso é contrário ao estabelecido por PEP 8: bloquear comentários - adicionar um comentário deve ser recuado da seguinte forma:

class Hello(object):
   """Something"""
   # The comment starts here

  # or worse
  def hi(self):
      # again, here
      pass

Configurações

Estou usando o incrível script Vundle e os plugins que estou usando são:

Bundle 'gmarik/vundle'
" navigation / display
Bundle 'kien/ctrlp.vim'
Bundle "tpope/vim-fugitive"
Bundle "ton/vim-bufsurf"
python import sys; sys.path.append("")
set rtp +=~/.vim/bundle/powerline/powerline/bindings/vim
Bundle 'Lokaltog/powerline'
Bundle 'nathanaelkane/vim-indent-guides'
Bundle 'altercation/vim-colors-solarized'    
" syntax
Bundle 'jQuery'
Bundle 'kchmck/vim-coffee-script'
" Bundle 'scrooloose/syntastic'
Bundle 'Syntastic'
Bundle "groenewege/vim-less"
Bundle "skammer/vim-css-color"
Bundle "hail2u/vim-css3-syntax"    
" Editing
Bundle 'AndrewRadev/splitjoin.vim'
Bundle 'tpope/vim-unimpaired'
Bundle 'rstacruz/sparkup.git'
Bundle 'klen/python-mode'
" Bundle 'sjl/gundo.vim'
Bundle 'mbbill/undotree'
" file-type based configs
filetype plugin indent on

Do meu .vimrc , aqui estão as configurações relacionadas ao Python:

let g:syntastic_python_checker = 'pyflakes'
let g:syntastic_python_flake8_args = 
      \ '--ignore=W191,E501,E121,E122,E123,E128,E225,W291'
let pymode_lint = 0
au FileType python setlocal expandtab shiftwidth=4 tabstop=8
      \ formatoptions+=croq softtabstop=4 smartindent
      \ cinwords=if,elif,else,for,while,try,except,finally,def,class,with
let python_highlight_all=1
let python_highlight_exceptions=0
let python_highlight_builtins=0

Resumo

Como o Python é um pouco mais antigo e maduro que o YAML e o Coffee-script, fico surpreso e frustrado com o fato de o Vim estar produzindo os resultados errados. Não é evidente para mim o que pode estar acontecendo - e eu ficaria grato por qualquer pensamento e direção. É claro que, se eu descobrir, postarei minhas conclusões.

    
por Brian M. Hunt 13.06.2013 / 15:19

0 respostas