This commit is contained in:
2026-10-31 15:58:33 +03:00
parent 838627fb33
commit cf1505eca5
7 changed files with 846 additions and 189 deletions
+30 -9
View File
@@ -64,21 +64,42 @@ api.editor:clear_tab_icon(1) -- снова "file"
## Иконки на полях редактора (gutter)
Слева от редактора есть узкая колонка с иконками. Методы действуют на
активную вкладку, а номера строк нумеруются с нуля, как в LSP. На одной строке
живёт одна иконка; повторный вызов заменяет прежнюю.
активную вкладку, а номера строк нумеруются с нуля, как в LSP.
У каждой иконки есть тип (`kind`), который задаёт сценарий: например,
`diagnostics` или `breakpoint`. На строке может жить по одной иконке каждого
типа, поэтому диагностика и другие сценарии не затирают иконки друг друга.
Повторная установка иконки того же типа заменяет её. Колонка расширяется под
самую насыщенную строку, чтобы иконки разных типов не накладывались.
| Метод | Описание |
| --- | --- |
| `api.editor:set_gutter_icon(line, icon, color)` | Поставить иконку на строку; `color` необязателен (`#RGB`, `#RGBA`, `#RRGGBB`, `#RRGGBBAA`). Без цвета иконка рисуется цветом темы. `false` — иконка или цвет неизвестны |
| `api.editor:gutter_icon(line)` | Имя иконки на строке или `nil` |
| `api.editor:gutter_color(line)` | Цвет иконки или `nil`, если цвет не задан |
| `api.editor:clear_gutter_icon(line)` | Убрать иконку со строки; `false`, если её не было |
| `api.editor:set_gutter_icon(line, icon, kind[, options])` | Поставить иконку типа `kind` на строку. `options = { color = "#RRGGBB", hover_color = "#RRGGBB" }` задаёт цвет и цвет при наведении; оба необязательны. Без цвета иконка рисуется цветом темы. `false` — иконка или цвет неизвестны либо тип пуст |
| `api.editor:gutter_icon(line, kind)` | Имя иконки этого типа на строке или `nil` |
| `api.editor:gutter_color(line, kind)` | Цвет иконки или `nil`, если цвет не задан |
| `api.editor:gutter_hover_color(line, kind)` | Цвет иконки при наведении или `nil` |
| `api.editor:clear_gutter_icon(line, kind)` | Убрать иконку этого типа со строки; `false`, если её не было |
| `api.editor:clear_gutter_line(line)` | Убрать все иконки строки |
| `api.editor:clear_gutter_kind(kind)` | Убрать иконки типа во всех строках активной вкладки; возвращает число удалённых |
| `api.editor:clear_gutter()` | Убрать все иконки активной вкладки |
| `api.editor:on_gutter_click(kind, callback)` | Назначить обработчик клика по иконке типа `kind`; `callback(line, icon, kind)`. `nil` вместо функции снимает обработчик |
```lua
api.editor:set_gutter_icon(4, "circle", "#e5484d") -- красная точка на 5-й строке
api.editor:set_gutter_icon(9, "play") -- цвет темы
api.editor:clear_gutter_icon(9)
api.editor:set_gutter_icon(4, "circle", "diagnostics", { color = "#e5484d" })
api.editor:set_gutter_icon(4, "play", "breakpoint") -- вторая иконка на той же строке
api.editor:set_gutter_icon(9, "play", "breakpoint", {
color = "#888888",
hover_color = "#ffffff",
})
api.editor:on_gutter_click("breakpoint", function(line, icon, kind)
print("клик", line, icon, kind)
end)
api.editor:clear_gutter_icon(4, "diagnostics") -- только один тип строки
api.editor:clear_gutter_kind("diagnostics") -- перерисовать только диагностику
api.editor:clear_gutter_line(4) -- все иконки строки
api.editor:clear_gutter() -- все иконки вкладки
```
Иконки привязаны к номерам строк и автоматически не сдвигаются при правке