Блоки кода
Вы можете писать фрагменты кода, блоки кода и другой текст моноширинным шрифтом с помощью
стандартного форматирования Markdown. Zulip также поддерживает подсветку синтаксиса и позволяет настраивать пользовательские
Интерактивные среды.
Вставить разметку кода
В окне ввода Zulip есть умная кнопка Код (), которая вставляет подходящую разметку в зависимости от контекста:
- Если текст не выделен, вставляется разметка блока кода (
```).
- Если выделенный текст в одной строке, вставляется inline-разметка (
`).
- Если выделенный текст в нескольких строках, вставляется разметка блока кода (
```).
- Через кнопку в окне ввода
- Через Markdown
-
Откройте окно ввода.
-
(необязательно) Выделите текст, который хотите отформатировать.
-
Нажмите значок Код () внизу окна ввода, чтобы
вставить разметку кода.
-
(необязательно) Чтобы включить подсветку синтаксиса в блоке кода, начните печатать название
языка программирования сразу после начальных ```. Выберите язык из подсказок
автодополнения.
Совет
Можно также использовать значок Код (), чтобы
убрать существующее форматирование кода из выделенного текста.
-
Откройте окно ввода.
-
Чтобы создать inline-фрагмент кода, используйте одинарные обратные кавычки вокруг текста:
Чтобы создать блок кода, используйте тройные обратные кавычки вокруг текста:
```
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!")
```
Язык по умолчанию для блоков кода
Администраторы организации могут настроить язык по умолчанию для блоков кода, который будет
использоваться, если у блока кода нет тега.
Внимание
Эта функция доступна только владельцам и администраторам организации.
- Инструкции для всех платформ
-
Перейдите в Настройки организации.
-
В разделе Настройки ленты сообщений измените Язык по умолчанию для блоков кода.
Если язык по умолчанию настроен, можно использовать ```text чтобы показывать блоки кода
без подсветки синтаксиса (например, при вставке текста ошибки).
Code playgrounds
Code playgrounds это интерактивные in-browser среды разработки, которые удобно использовать для
редактирования и отладки кода. Их можно настроить для любого языка программирования. В блоках кода
Zulip, помеченных языком, при наведении появляется кнопка, позволяющая открыть код на сайте
playground.
Добавить пользовательский code playground
Внимание
Эта функция доступна только владельцам и администраторам организации.
- Инструкции для всех платформ
-
Перейдите в Интерактивные среды.
-
В блоке Добавить новую интерактивную среду для кода заполните Язык, Имя и Шаблон URL.
-
Нажмите Добавить интерактивную среду для кода.
Например, чтобы настроить 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, напишите нам с деталями,
и мы постараемся помочь.
Похожие статьи