LINUX.ORG.RU

Vim: Файлы синтаксиса и folding


0

0

собственно хочется сворачивать (folding) длинные doc комменты: /** * Это коммент. * * Тут многа букафф * @return foo */

если в файле синтаксиса пишу как ниже, то сворачивается весь коммент:

syn region myDocComment start="/\*\*" end="\*/" fold keepend

вот что получается /** -------------------------------

1. как сделать, чтобы сворачивание начиналось со второй строки и был виден заголовок? /** * Это коммент. --------------------- < тут сфолдилось

2. как сделать, чтобы в свернутом состоянии продолжали отображаться строчки выбранного типа: /** * Это коммент. * @return foo */ (предположим для "второй строчки" и @return foo уже определены специфичные синтаксические группы).

anonymous

упс.. сори за формат.. еще раз...


собственно хочется сворачивать (folding) длинные doc комменты:
/**
 * Это коммент.
 * 
 * Тут многа букафф
 * @return foo
 */

если в файле синтаксиса пишу как ниже, то сворачивается весь коммент:

syn region  myDocComment    start="/\*\*"  end="\*/" fold keepend

вот что получается
/** -------------------------------


1. как сделать, чтобы сворачивание начиналось со второй строки
и был виден заголовок?
/**
 * Это коммент. --------------------- < тут сфолдилось

2. как сделать, чтобы в свернутом состоянии продолжали отображаться строчки выбранного типа:
/**
 * Это коммент.
 * @return foo
 */
(предположим для "второй строчки" и @return foo уже определены специфичные синтаксические группы).

anonymous
()
Ответ на: комментарий от anonymous

ага. сам написал, сам себе отвечаю.

фолдинг можно показать лишь одной строкой. поэтому хотелка "2" отпадает.
касаемо "1", определил функцию форматирования:

set foldtext=MyFoldText()
function MyFoldText()
let line = getline(v:foldstart)
   if line =~ '/\*\*'
     let line = getline(v:foldstart + 1)
     let sub = substitute(line, '^\(\s*\) \*\s*', '\1', "")
   else
     let sub = line
   endif
   let sub = substitute(sub, '\t', repeat(" ", &shiftwidth), "") . ' '
   return sub
endfunction

практически то что нужно. %)

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.