Reddit - неовім швидкий колоризатор без зовнішніх залежностей

Оскільки я в основному просто написав більшість функціональних можливостей для цього, я припустив, що міг би написати ще один плагін і зробити колоризатор Luajit. Не потрібні залежності, прості параметри конфігурації та хороша продуктивність.

швидкий

E: Крім того, після цього наступні плагіни/бібліотеки, над якими я збираюся працювати, - це інтерфейс спливаючого меню для взаємодії з такими речами, як fzf, а потім клієнт протоколу мовного сервера.

Чесно кажучи, на основі мого тестування, я думаю, що це може бути найшвидший доступний колоризатор.

Я знаю, що існують режими, які він не реалізує, як ті, які творчо реалізувала гексокіназа, але я думаю, що передній план та фон (після використання інших режимів) є найпоширенішими та найкориснішими.

Якщо хтось має якісь пропозиції щодо того, що ще додати, дайте мені знати.

О, так, це дуже швидко, насправді я не задихнувся, відкривши мій 36K LOC Tailwind, згенерований css-файл, на відміну від інших плагінів-колоризаторів. Потрібно встановити termguicolors, що маніпулює моєю кольоровою схемою, оскільки я використовую 256 кольорів з вимкненими termguicolors.

Чудово чути! Розкажіть про це своїм друзям. Я не думав називати це «найшвидшим сучасним колоризатором», бо я погано влаштовую маркетинг.

Я написав це з урахуванням продуктивності. Я думаю, що було б дуже важко обіграти його плагіном не в Lua, через накладні витрати на RPC. Навіть все-таки, я написав його, використовуючи FFI для розбору, щоб проаналізувати коди імен, і спробував деякі тести для інших частин. Це навіть добре працює на довгих лініях.

Якщо ви хочете побачити справжній стрес-тест, виконайте .luado return vim.inspect (vim.api.nvim_get_color_map ()): gsub ("\ n", "). Величезна лінія унікальних кольорів, але робить це миттєво.

Так, йому потрібні термічні фарби. Інакше це не активується. Я міг би зробити щось для 256 кольорів з інтерполяцією та пошуком найближчого сусіда, але це не буде точно, що зменшує значення.

Я міг би просто виділити кольори, які доступні у 256, однак, якщо це щось, на вашу думку, корисне. Це було б не надто складно, оскільки у мене є функції, вже записані в моєму модулі terminal.vim.

Я використовував колоризатор coc, і іноді він заморожував мій nvim на ft = help buffers.

Чи потрібно для nvi> = 0,4 для стандартного API бібліотеки lua?

Я щойно випробував це на своїй робочій машині Ubuntu, яка використовує nvim 0.38, і вона не вдалася.

Я забув помістити це в README, але так, це вимагає nvim> = 0,4.

Я намагався знайти спосіб, як це зробити на 0.3.8, але є кілька речей, які могли б обмежити. Я б міг змусити це працювати, якщо б вибірково вимкнув кілька функцій.

У чому полягала Ваша конкретна помилка?

Вибачте, вже не на роботі;). Я можу сказати вам лише понеділок, але він повинен бути легко відтворюваним у віртуальній машині або контейнері Ubuntu.

Проблема полягає в тому, що офіційний неовім ppa заморожений, оскільки супровідник стверджує, що нам потрібно почекати, поки і debian, і Ubuntu запакують новіші версії необхідних залежностей. Який облом. Я також хочу використовувати плаваючі вікна.

Ах, мені було цікаво, чому PPA так сильно відстає. Я також використовую Arch для всього, ха-ха. Neovim 0.4, безумовно, веселіший, ніж 0.3. У мене є кілька плагінів, які я розробляю, орієнтовані на 0,4+. Їм знадобиться головним чином vim.loop.

Я дуже задоволений роботою колоризатора (він насправді перевершив мої очікування), і я впевнений, що зможу зробити найкращий/найшвидший доповнювач і для неовіму. Наступного вільного слота, який я маю, я збираюся закінчити клієнт LSP, і тоді це буде лише трохи роботи з інтерфейсом, перш ніж він стане функціональним. Я справді не очікую, що це займе задовго до v0.1. Зазвичай я чекаю, поки щось не буде дуже відполіровано перед публікацією, але думаю, цього разу я випущу це "дочасним доступом" і буду розробляти публічно. (E2: Lol nvm, клієнт LSP у neovim знаходиться далі, ніж я очікував https://github.com/neovim/neovim/pull/10222).

Е: Я забув, чому я розпочав цю бесіду. Ви повинні взяти на руку 0,4 на роботі, щоб ви могли грати з нами, було моєю ідеєю, ха-ха.

Я майже впевнений, що зможу зробити найкращий/найшвидший заповнювач і для неовіму. Наступного вільного слота, який я маю, я збираюся закінчити клієнт LSP, і тоді це буде лише трохи роботи з інтерфейсом, перш ніж він стане функціональним.

Це насправді чудово, дуже чекаю перевірити вашу подальшу роботу.

Я особисто використовую coc як мою програму завершення роботи/клієнта lsp, але я відчуваю, що все ще є мінімалістична та ефективна альтернатива.

Чи не могли б ви використовувати реліз appimage? Принаймні доти, поки не буде оновлено ppa

Я ніколи не пробував appimages, я завжди віддаю перевагу користуванню рідними пакетами для всього, якщо це можливо.

Мій єдиний досвід роботи з контейнерними пакетами - це оснащення, і я ненавидів це, що змушує мене трохи насторожено користуватися додатком. На даний момент я вважаю за краще просто будувати його самостійно.

Чи можна це змінити, щоб додати підтримку змінних SASS? Я схильний створювати змінні/імена для кожного кольору, який я використовую, що, на мою думку, допомагає скоротити наявність занадто багатьох подібних кольорів.

. було б чудово, якби кожен екземпляр $ color_boulder був також виділений!

Добре, я встиг: P

Використання складатиметься з двох частин:

Приєднання до буфера для запуску оновлення словника.

autocmd FileType scss, наприклад, потрібно'colorizer/sass'.attach_to_buffer ()

Тільки прикріплені буфери будуть розглядатися для визначень змінних.

Ого, це було швидко!

Чи можете ви пояснити більше про файл налаштування? Я додав це до свого .vimrc .

Помістіть його після виклику plug # end () замість використання do .

Ось потенційний приклад:

Дякую за приклад! Я змінив його, щоб використовувати `sass-variable-matcher`, як ви запропонували в GitHub, і додав` set termguicolors` і він працює!

Не зовсім у теперішньому вигляді, але з невеликою модифікацією функції highlight_buffer (.), Я міг би створити супутню бібліотеку, яка насправді могла б це зробити. Якщо я додаю параметр для виділення_буфера, щоб прийняти спеціальну функцію збігу, яка є будь-якою функцією форми fn (line, i) -> match_length, rgb_hex, тоді ви можете використовувати це з функцією, яка аналізує ваш поточний файл для оголошень змінних та додає його до глобального словника, який містить ці визначення змінних та відповідні їм значення кольорів.

Найскладніше зробити парсер, який правильно реагує на інкрементальні збіги, тому що, скажімо, ви модифікуєте рядок, наприклад $ color_bl: # 00, і продовжуєте набирати чорний, він буде відповідати часткам для цього рядка в наївному алгоритмі, який додасть помилкові спрацьовування. Отже, наївним підходом було б розібрати весь файл для оголошень при кожній зміні рядка, або ви могли б використовувати більш інкрементний алгоритм, але він був би більш складним (щось на зразок відстеження, в якому рядку знаходиться декларація).

Якщо ви не проти потенційного покарання за продуктивність за переробку файлу або накладання на нього певного виду, щоб мінімізувати це покарання, я міг би бачити, як він працює. Якщо ваш файл менший за 100 Кб, я думаю, це не було б помітно за наївного підходу, tbh.

E: Я спробую створити для цього експериментальну бібліотеку, яку б ви могли спробувати:) Використання було б щось на зразок autocmd scss lua require'colorizer/sass'.attach_to_buffer () .

Як я думаю про реалізацію цього, він може працювати або на буфері за рівнем буфера, або на глобальному рівні, тобто він може або виділяти змінні, виявлені в поточному буфері, і лише поточний буфер, або виділятиме всі змінних з усіх буферів, навіть якщо є конфлікти.

З часом це може змінитися, як тільки стане доступним кращий парсер для scss, як у розробника дерев, але я не хочу витрачати на це стільки часу прямо зараз.