roxygen2 + cygwin + параметр по умолчанию = усеченный раздел `\usage`

У меня есть пакет для R, который я разрабатывал под Linux, и пришло ужасное время, когда я тестирую его под Windows.

Документация сделана с помощью roxygen, а для сборки пакета я использую cygwin.

Дело в том, что когда я roxygenise('test-package'), roxygen усекает раздел \usage документации до одного символа. Это происходит с некоторыми, но не со всеми моими функциями, и я не могу понять закономерность.

Этого не происходит при запуске одной и той же команды (например, roxygenise('test-package') из командной строки R) в Linux или Windows — только Cygwin в Windows (используя R devtools + командную строку из Windows для меня не вариант - это часть большого проекта с Makefiles и т. д.).

Во всех случаях я использую roxygen v2.2.2.


Обновление:

Это происходит для любой функции с параметром по умолчанию.


Я свел это к одному воспроизводимому примеру, максимально урезав его, чтобы изолировать проблему:

  1. Из R:

    # эта функция использовалась для обрезки строк, но я убрал ее полностью
    # чтобы устранить его как причину проблемы
    обрезка <- функция (x = 'asdf')
    {
    возврат( х )
    }
    package.skeleton('тест')
    
  2. изменить trim.R (в test/R) и добавить следующий roxygen вверху, чтобы файл выглядел так:

    #' удалить пробелы из строки
    #'
    #' @param x строка или вектор строк для обрезки
    #' @return x обрезан.
    #' @экспорт
    обрезать <-
    функция (х = 'asdf')
    {
    возврат( х )
    }
    
  3. Запустите R и сгенерируйте документацию:

    library(roxygen2)
    roxygenise ('тест')
    
  4. Посмотрите на получившийся файл trim.Rd (в test/man):

    \name{trim}
    \псевдоним{обрезка}
    \title{обрезать пробелы в строке}
    \использование{
    т
    }
    \аргументы{
     ...# остальная часть файла .Rd - здесь все в порядке.
    

Посмотрите, как там просто \usage{t} ??

Конечно, когда кто-то запускает проверку R CMD, появляется ошибка о том, что задокументированные аргументы не отображаются в \usage, но это потому, что \usage усекается.

Кто-нибудь знает, почему это происходит и как это обойти? Возможно, что-то в roxygen2 основано на чем-то, что работает на Mac, Windows и Linux, но не на Cygwin?

ура (я рву на себе волосы из-за этого).

Обновление №2:

Я использовал R, установленный из диспетчера пакетов Cygwin, в отличие от моего Windows R (т.е. в C:/Program Files/R/R-2.14.2/bin ) - Я не знал, что Windows R будет работать под Cygwin.

Если я использую Windows R в Cygwin, ошибка исчезает. Если я использую Cygwin R в Cygwin, ошибка присутствует.

Я могу только предположить, что это какая-то ошибка, связанная с Cygwin R, а не с roxygen2.

Сейчас я буду использовать обходной путь использования Windows R в cygwin (на самом деле, теперь, когда я знаю, что могу это сделать, Cygwin R в любом случае не нужен!).

6
задан Cœur 1 January 2017 в 04:27
поделиться