Пропустить отступ первой строки после аннотации JUnit @Test - PullRequest
1 голос
/ 24 июля 2011

В общем, я предпочитаю, чтобы теги аннотаций для методов, в том числе @Test, находились в строке перед объявлением метода, как это

@Test
public void testMyMethod() {
// Code
}

вместо

@Test public void testMyMethod() {
// Code
}

У меня есть определенные настройки Java в ~ / .vim / ftplugins / java.vim. Что я могу добавить в java.vim так, чтобы отступ был пропущен в первой строке после тега @Test? В данный момент vim будет, как и положено в соответствии с java.vim, сделать отступ в 4 символа, давая

@Test
____* <-- cursor placed here

пока я бы предпочел

@Test
* <-- Cursor placed here

1 Ответ

0 голосов
/ 26 июля 2011

Я делаю нечто подобное в C ++, где стиль кодирования моей компании не требует отступов в блоках пространства имен.Для этого есть ответ на в этом посте , адаптация его к вашему вопросу просто поменяет бит '^\s*namespace.*' на нужный вам шаблон.Если это для всех аннотаций, возможно просто ...

function! IndentAnnotation()
  let l:cline_num = line('.')
  let l:pline_num = prevnonblank(l:cline_num - 1)
  let l:pline = getline(l:pline_num)
  let l:retv = cindent('.')
  while l:pline =~# '\(^\s*{\s*\|^\s*//\|^\s*/\*\|\*/\s*$\)'
    let l:pline_num = prevnonblank(l:pline_num - 1)
    let l:pline = getline(l:pline_num)
  endwhile
  if l:pline =~# '^\s*@.*'
    let l:retv = 0
  endif
  return l:retv
endfunction

setlocal indentexpr=IndentAnnotation()

Сохраните это в ваших vimfiles (внутри ~ / vimfiles или в окнах вашего homedir или внутри ProgramFiles \ vim \ vimfiles) как indent / java.vim,Вы можете упростить эту задачу, удалив поиск while / end while для непустой строки, если вам нужно, чтобы аннотация появлялась на строке точно над строкой, для которой вы делаете отступ (без промежуточных пустых строк).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...