2015-07-08 21 views
6

Sto provando ad usare Vim per qualche codice Groovy al lavoro. Non sembra che gestisca bene i rientri automatici quando non si usano i punti e virgola. Ho trovato alcune domande relative a Ruby e JavaScript con gli stessi problemi, ma nessuna delle correzioni che trovo funziona per me. Ho filetype plugin indent on nel mio .vimrc, e non impostare cindent, autoindent o smartindent. Ho provato a eseguire setlocal nocindent nosmartindent in un buffer di Groovy e a reindirizzare il file con ggVG= nel caso in cui un plug-in configurasse le persone dietro le quinte e continuasse a sbagliare.Posso correggere il rientro di Groovy in Vim?

Per esempio, ho questo su un piccolo campione (da un libGDX sandbox app personali che sto scrivendo in Groovy)

@Override 
    void render() { 
     Gdx.gl.glClearColor(0.75f, 0.75f, 0.75f, 1) 
      Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT) 
      batch.begin() 
      batch.draw(img, 0, 0) 
      font.draw(batch, "Testing", 300, 400) 
      batch.end() 
    } 

Avviso i rientri in più dopo l'annotazione, la parentesi graffa di apertura, e la prima linea della funzione. Il mio .vimrc è abbastanza complesso, ma posso postare un link ai miei dotfiles se qualcuno pensa che possa aiutarti.

+0

Molto probabilmente è necessario aggiornare Vim. Quale versione di Vim stai usando? – FDinoff

+0

Vim 7.3.547 su Raspbian (sul mio Raspberry Pi), 7.4.591 su Cygwin (compilato anch'io), 7.3 con livello di patch sconosciuto su OS X Yosemite e MacVim 7.4.712 mostrano tutti lo stesso problema. – DuckPuppy

+0

Inoltre, ho provato questo eseguendo 'vim -u NONE -U NONE ' su ciascuna di queste versioni e posso vedere lo stesso comportamento, quindi sono abbastanza certo che non sia un plugin o una delle mie impostazioni .vimrc che causano questo . – DuckPuppy

risposta

6

Vim non viene fornito con uno script di rientro per groovy. Quindi cerca di utilizzare le regole di indentazione standard basate su C. Queste regole usano il punto e virgola per determinare se una linea è terminata, motivo per cui si ottengono i rientri di continuazione della linea sulla seconda riga della funzione.

Poiché vim non include lo script di rientro, è possibile utilizzare il plug-in groovyindent. Posizionato in ~/.vim/indent. È inoltre necessario eseguire dos2unix su groovy.vim poiché contiene le terminazioni di riga errate.

+0

E 'stato così, e mi sento un po' sciocco ora che non l'ho trovato prima. Uso NeoBundle per gestire i miei plugin Vim. Chiunque voglia fare lo stesso per il plugin groovyindent può usare questo snippet per installarlo ... questo si prenderà cura dell'esecuzione di dos2unix sul file durante l'installazione: https://gist.github.com/duckpuppy/cf5931c7abbf5389f7b9 – DuckPuppy

+4

Là è una versione unix di groovyindent ora: https://github.com/vim-scripts/groovyindent-unix – cmcginty