Активируйте фальцевальные маркеры VIM через моделин - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь выяснить, почему сворачивание не работает с многострочными комментариями, и у меня нет идей.

Давайте рассмотрим такой пример:

#include <stdio.h>
#include <stdlib.h>

void
panic(void) /* {{{ */
{
    abort();
}
/* }}} */

void
say_hello(void) /* {{{ */
{
    printf("Hello, World \n");  
}
/* }}} */

void
say_goodbye(void) /* {{{ */
{
    printf("Good Bye, World \n");
    panic();
}
/* }}} */

int
main(void) /* {{{ */
{
    void (*message) (void);

    message = say_goodbye;
    message();

    message = say_hello;
    message();

    return 0;
}
/* }}} */

Следующие моделины работают как положено. Открывая файл, я вижу, что весь код свернут:

/* vim600: set noet sw=4 ts=4 fdm=marker : */

и

// vim600: noet sw=4 ts=4 fdm=marker

enter image description here

Команда :verbose set syntax filetype foldmethod foldexpr

показывает ожидаемый результат

  syntax=c
        Last set from /usr/share/vim/vim74/syntax/syntax.vim
  filetype=c
        Last set from /usr/share/vim/vim74/filetype.vim
  foldmethod=marker
        Last set from modeline
  foldexpr=0

Однако любые варианты с многострочными комментариями не дают желаемого результата. Например:

/*
 * vim600: noet sw=4 ts=4 fdm=marker
 * vim<600: noet sw=4 ts=4
 */

или даже

/* Modeline for ViM {{{
 * vim: noet:sw=4:ts=4
 * vim600: noet:sw=4:ts=4:fdm=marker
 * }}} */

Не будет автоматически сворачивать код при открытии файла:

  syntax=c
        Last set from /usr/share/vim/vim74/syntax/syntax.vim
  filetype=c
        Last set from /usr/share/vim/vim74/filetype.vim
  foldmethod=manual
  foldexpr=0

1 Ответ

0 голосов
/ 05 января 2019

Проверьте настройку modelines. Vim ищет модлины в первой или последней строках моделинов. Если для modelines задано значение 1, моделин должен находиться либо в первой, либо в последней строке файла.

Значение по умолчанию для modelines равно 5. Это подойдет для ваших примеров.

См. :help modelines

...