Блоки кода

Вы можете писать фрагменты кода, блоки кода и другой текст моноширинным шрифтом с помощью стандартного форматирования Markdown. Zulip также поддерживает подсветку синтаксиса и позволяет настраивать пользовательские Интерактивные среды.

Вставить разметку кода

В окне ввода Zulip есть умная кнопка Код (), которая вставляет подходящую разметку в зависимости от контекста:

  • Если текст не выделен, вставляется разметка блока кода (```).
  • Если выделенный текст в одной строке, вставляется inline-разметка (`).
  • Если выделенный текст в нескольких строках, вставляется разметка блока кода (```).

  1. Откройте окно ввода.

  2. (необязательно) Выделите текст, который хотите отформатировать.

  3. Нажмите значок Код () внизу окна ввода, чтобы вставить разметку кода.

  4. (необязательно) Чтобы включить подсветку синтаксиса в блоке кода, начните печатать название языка программирования сразу после начальных ```. Выберите язык из подсказок автодополнения.

Совет

Можно также использовать значок Код (), чтобы убрать существующее форматирование кода из выделенного текста.

  1. Откройте окно ввода.

  2. Чтобы создать inline-фрагмент кода, используйте одинарные обратные кавычки вокруг текста:

    `text`
    

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

    ```
    def f(x):
        return x+1
    ```
    

    Чтобы включить подсветку синтаксиса, используйте тройные обратные кавычки, затем одну или несколько букв, и выберите нужный язык из подсказок автодополнения.

    ```python
    def fib(n):
        # TODO: base case
        return fib(n-1) + fib(n-2)
    ```
    

Совет

Можно также использовать ~~~ для начала блоков кода или просто сделать отступ кода на 4 пробела и больше.

Примеры

Что вы вводите

Inline code span: `let x = 5`

Code block:
```
def f(x):
   return x+1
```

Syntax highlighting:
```python
def fib(n):
    # TODO: base case
    return fib(n-1) + fib(n-2)
```

Совет

Можно также использовать ~~~ для начала блока кода или просто сделать отступ кода на 4 пробела и больше.

Как это выглядит

Код Markdown

Совет

Виджет в правом верхнем углу блока кода позволяет быстро скопировать код в буфер обмена.

Тегирование языка

Если пометить блок кода языком, включается подсветка синтаксиса и (если настроено) Интерактивные среды. Zulip поддерживает подсветку синтаксиса для сотен языков.

Блок кода можно пометить, написав название языка после “забора” (```), который открывает блок кода. Автодополнение поможет ввести название. Полный список значений, поддерживающих подсветку, соответствует значениям Short names из документации лексеров Pygments.

``` python
print("Hello world!")
```

Язык по умолчанию для блоков кода

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

Внимание

Эта функция доступна только владельцам и администраторам организации.

  1. Перейдите в Настройки организации.

  2. В разделе Настройки ленты сообщений измените Язык по умолчанию для блоков кода.

Если язык по умолчанию настроен, можно использовать ```text чтобы показывать блоки кода без подсветки синтаксиса (например, при вставке текста ошибки).

Code playgrounds

Code playgrounds это интерактивные in-browser среды разработки, которые удобно использовать для редактирования и отладки кода. Их можно настроить для любого языка программирования. В блоках кода Zulip, помеченных языком, при наведении появляется кнопка, позволяющая открыть код на сайте playground.

Добавить пользовательский code playground

Внимание

Эта функция доступна только владельцам и администраторам организации.

  1. Перейдите в Интерактивные среды.

  2. В блоке Добавить новую интерактивную среду для кода заполните Язык, Имя и Шаблон URL.

  3. Нажмите Добавить интерактивную среду для кода.

Например, чтобы настроить playground для Rust, можно указать Rust и st-lang.org/?code={code}.

Когда блок кода помечен как rust (явно или через язык по умолчанию в организации), у пользователей появится опция открыть этот блок кода в настроенном playground.

Совет

Code playgrounds используют URL-шаблоны, совместимые с RFC 6570. Рендеринг Zulip подставляет URL-encoded содержимое блока кода в параметр code, обозначенный как {code} в URL-шаблоне, чтобы сформировать ссылку. Подробнее про шаблоны URL можно также посмотреть в документации про добавление пользовательского линкфикатора.

Примеры URL-шаблонов playground

Вот несколько URL-шаблонов для популярных языков:

  • Java: scircles.cemc.uwaterloo.ca/java_visualize/#code={code}`
  • JavaScript: script.html#code={code}
  • Python: `
  • C: `
  • C++: `
  • Rust: st-lang.org/?code={code}

Технические детали

  • Можно настроить несколько playground для одного языка; тогда пользователь сможет выбрать, какой открыть.
  • Поле Язык это “человекочитаемое” имя языка из Pygments. Тег языка в блоке кода сопоставляется с такими именами внутри Zulip; например, py3 и py сопоставляются с Python. Можно использовать автодополнение (появляется при вводе или клике по полю Language), чтобы найти имя Pygments.
  • Ссылки для открытия playground всегда формируются подстановкой URL-encoded содержимого блока кода в переменную code в URL-шаблоне. URL-шаблон должен содержать ровно одну переменную с именем code.
  • Playground-сайты не всегда четко документируют формат URL; иногда достаточно взять префикс из адресной строки браузера.
  • Можно использовать пользовательское “имя языка” для простых интеграций. Например, блок кода с “языком” send_tweet можно связать с “playground”, который отправляет содержимое блока как твит.

Если возникнут сложности с настройкой code playground, напишите нам с деталями, и мы постараемся помочь.

Похожие статьи