Javadoc: разрывы строк без HTML-тегов?


81

Извините за возможный вопрос типа FAQ, но я просто не могу найти ответ.

Насколько я помню, Eclipse, пустая строка в комментарии Javadoc отображается (во всплывающих окнах Javadoc в исходном коде) как разрыв строки (с дополнительным вертикальным интервалом).

Однако в Netbeans это не так.

Могу ли я настроить Javadoc на интерпретацию пустой строки как разрыва строки?

Дополнительный вопрос: могу ли я переопределить поведение Netbeans по умолчанию (связанное с этим) для всплывающих окон Javadoc в исходном коде?

Я говорю о следующем:

Источник

/**
 * Paragraph One
 *
 * Paragraph Two
 */
 void someMethod() { }

Интерпретация затмения

 Paragraph One

 Paragraph Two

Интерпретация Netbeans

 Paragraph One Paragraph Two

1
Многие из этих ответов теперь устарели (заменены) NetBeans8.2, см. Ответ от @fujy ниже, он отлично работает.
Webel IT Australia - голосующий,

Ответы:


80

Это не имеет ничего общего с Netbeans. Я подозреваю, что в одном случае вы смотрите на исходный код, а в другом - на вывод Javadoc. Новые строки не имеют значения в HTML: поэтому вывод не будет их отображать. Если вам нужна новая строка, используйте a <p>или <br>.


4
Как я уже упоминал в вопросе, Eclipse действительно считает пустые строки абзацами. Таким образом , мое предположение, что он должен быть возможным для достижения этой цели некоторой конфигурации JavaDoc (Netbeans или без него ).
java.is.for.desktop

Eclipse показывает исходный код в любом формате. Netbeans 6.9.1 также показывает исходный код, то же самое, т.е. он также не игнорирует разрывы строк. Однако, если вы каким-либо образом смотрите на вывод Javadoc, если это было бы неправильно, это означает, что нельзя игнорировать разрывы строк.
user207421

40

Я не уверен, помогает ли это в случае OP, однако я выложил <pre></pre>свой документ, чтобы netbean не испортил мое форматирование. Так это будет выглядеть

/**
 * <pre>
 * Paragraph One
 *
 * Paragraph Two
 * </pre>
 */

Это ближе всего к отображению новых строк в текстовом формате. Я использую NetBeans 7.1.2. Таким образом, использование code formatoption не приведет к переформатированию документа. Отображение документа в подсказках все еще отформатировано.

Обновление: в Netbeans 8.x есть опция форматирования кода для отключения форматирования комментариев.


13

Уже есть опция NetBeans- проверенная в версии 8.2 - которая позволяет вам сохранять новые строки в ваших комментариях и / или добавлять <p>теги к вашим, Javadocесли необходимо

  • Просто из Toolsменю выберитеOptions
  • Перейдите на Editorвкладку, затем на Formattingвкладку
  • В Languageменю выберите Java, а в Categoryменю выберитеComments
  • Установите Preserve New Linesфлажок в Generalразделе, если вы хотите сохранить новые строки в комментариях. Это сохранит новые строки без добавления <p>тега
  • Установите Generate "<p>" on Blank Linesфлажок в Javadocразделе, если вы также хотите добавить <p>тег .

введите описание изображения здесь


2
Определенно лучший ответ на NetBeans 8.2. Легко. Но вы должны отредактировать его, чтобы добавить, что на самом деле он срабатывает только тогда, когда вы выполняете форматирование в коде (с существующими разрывами строк). Нужно быть осторожным, если они уже <p>есть вручную, иногда <p>``<p>с первого раза можно добавить вдвое . После этого все работает как положено.
Webel IT Australia - голосующий,

4

Я согласен с вами, HTML не входит в исходный код. К сожалению, я не нашел особой помощи в этом поиске в Google. На самом деле это довольно просто реализовать.

Вот настраиваемый доклет, который вы можете скомпилировать и использовать:

import com.sun.javadoc.*;
import com.sun.tools.doclets.standard.*;

/**
 * Formats text-only comments with HTML.
 */
@SuppressWarnings("restriction")
public final class TextDoclet {
    private static final Pattern NEWLINE_REGEX = Pattern.compile("\\n");
    private static final String BR = "<br/>\n";

    public static boolean start(RootDoc rootDoc) {
        for ( ClassDoc classdoc : rootDoc.classes())
            classdoc.setRawCommentText(formatText(classdoc.getRawCommentText()));

        return Standard.start(rootDoc);     
    }

    private static String formatText(String text) {
        return NEWLINE_REGEX.matcher(text).replaceAll(BR);
    }
}

Пример того, как вызвать его с помощью javadoc:

javadoc -docletpath ~/project/text-doclet/target/text-doclet-1.0.0-SNAPSHOT.jar -doclet com.myorg.textdoclet.TextDoclet -sourcepath ~/project/myapp/src/main/java -subpackages com.myorg.myapp

2

JavaDoc отображает способ определения стилей CSS. Для этого вы можете отредактировать стили CSS, связанные с тегами абзацев:

p {
    line-height: 25px;
}

1
Спасибо, но я уверен, что Netbeans вообще не интерпретирует пустую строку как абзац (см. «Интерпретация Netbeans» в моем вопросе). Я имею в виду: вы можете определить межстрочный интервал, только если у вас есть линии.
java.is.for.desktop

Хм. Я видел это. Но не совсем уверен, предоставляет ли Netbeans возможность редактировать это.
adarshr

2

Это псевдорешение
(которое, к сожалению, влияет только на сгенерированный javadoc, но не влияет на отображение javadoc в исходном коде Netbeans).

Укажите таблицу стилей, содержащую следующее:

div.block {
    white-space: pre;
}

0

Я понятия не имею , что делает здесь затмение, но если вы хотите это поведение в целом (не только IDE), возможно , придется создать новый Doclet (который может быть основан на по умолчанию HTML доклета) вместо этого, там вставляя <p>в каждая пустая строка или что-то в этом роде.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.