LINUX.ORG.RU

Написал программу, которая позволяет использовать neovim как $PAGER

 , , , ,


0

3

Исходный код, а также примеры использования опубликованы на github.
Буду благодарен, если кто-то протестирует/сделает code-review;
фичреквесты приветствуются

P.S.
Разница с vimpager и nvimpager:
* Контрольные последовательности ANSI вместо AnsiEsc.vim плагина интерпретируются напрямую через :term буффер — ничего не тормозит.
* Не нужно ждать EOF — текст отображается сразу по мере поступления.
* Не запускает neovim внутри neovim, а использует родительский процесс

★★

Последнее исправление: I60R (всего исправлений: 1)

Если с программой всё ок — сделаю версию 1.0 и опубликую PKGBUILD в AUR

I60R ★★
() автор топика

Детектор хипстоты задымился! Всем тру советую пройти по ссылкам и насладиться терпким ароматом всраста :-)

anonymous
()
Ответ на: комментарий от entefeed

В этом случае перемещение будет по курсору, а не построчно, как это сделано в less/nvimpager. Ну и подсветка man pages будет отображаться в виде esc-последовательностей.

r3lgar ★★★★★
()
Последнее исправление: r3lgar (всего исправлений: 1)
Ответ на: комментарий от r3lgar

Какой нафиг </thread>, а объяснительная от ТС?

t184256 ★★★★★
()
Ответ на: комментарий от r3lgar

Ну зачем ты так, рустерам же нужно хоть что-то написать на своей прелести, а то совсем зачахнут.

anonymous
()
Ответ на: комментарий от entefeed

В этом случае не будут интерпретированы ANSI escape sequences.
Вот что будет, если перенаправить вывод ls --color=always

Cargo.toml
LICENSE
README.md
[0m[01;34msrc[0m

Придётся устанавливать AnsiEsc.vim плагин, который очень медленный и не поддерживает все управляющие последовательности (так было, когда я его использовал).

I60R ★★
() автор топика
Ответ на: комментарий от anonymous

Детектор хипстоты задымился!

Сломался, наверное

Всем тру советую пройти по ссылкам и насладиться терпким ароматом всраста

С этим спорить не буду — я единственный разработчик, это моя первая программа на Rust.
Опыта в разработке маловато.
Чего ещё ожидать?

I60R ★★
() автор топика
Ответ на: комментарий от r3lgar

nvimpager идёт в комплекте с.

Known Bugs (and non features)
* if reading from stdin, nvimpager (like nvim) waits for EOF until it starts up
* large files are slowing down neovim on startup (less does a better, i.e. faster and more memory efficient job at paging large files)

Кроме того, vimpager и nvimpager сильно замедляют скроллинг

I60R ★★
() автор топика
Ответ на: комментарий от RazrFalcon

Думал все знают...
Немного обновил README

I60R ★★
() автор топика
Ответ на: комментарий от RazrFalcon

Не хватает описания что такое pager.

Виндузоид неграмотный? Погугли :-) Лол

anonymous
()
Ответ на: комментарий от anonymous

всраст он у всех такой терпкий

А конкретно к моему коду будут замечания?

I60R ★★
() автор топика
Ответ на: комментарий от anonymous

Зачем писать на русте то, что обыгрывается скриптованием самого редактора в одном шелл-скрипте?

// По ссылке не ходил.

r3lgar ★★★★★
()
Ответ на: комментарий от I60R

Поэтому большинство юзает less. Остальные юзают more.

r3lgar ★★★★★
()
Ответ на: комментарий от r3lgar

Зачем писать на русте то, что обыгрывается скриптованием самого редактора в одном шелл-скрипте?

А почему нет?
Я хотел изучить Rust более подробнее, попробовать некоторые библиотеки, Just for fun.
Один серьёзный недостаток — нужно устанавливать Rust тем, у кого он ещё не установлен

I60R ★★
() автор топика
Ответ на: комментарий от r3lgar

В этом случае перемещение будет по курсору, а не построчно, как это сделано в less/nvimpager. Ну и подсветка man pages будет отображаться в виде esc-последовательностей.

export MANPAGER="nvim -c 'set ft=man' -"
man 3 getopt


Всё красиво показывает, свистит, пердит. А сабж не нужен.

d_a ★★★★★
()
Последнее исправление: d_a (всего исправлений: 1)
Ответ на: комментарий от Bruce_Lee

Спасибо, а какие именно фичи?
Что-то подобное идёт в комплекте с neovim.
Т.е. если сделать export MANPAGER='nvim +"set ft=man " -'
(export MANPAGER='nvr -c "set ft=man" -' для neovim-remote) — будет работать.
Моя программа тоже должна работать с export MANPAGER='page -t man', но почему-то подсветка синтаксиса не включается.
Я посмотрю в чем дело

I60R ★★
() автор топика
Ответ на: комментарий от r3lgar

В этом случае перемещение будет по курсору, а не построчно

Кстати, у меня перемещение построчно (по дефолту)

I60R ★★
() автор топика
Ответ на: комментарий от I60R

Фичи перечислены в Features.

Например, твой плугин выходит из редактора одним нажатием q ?

я юзаю его как

alias man='viman'
viman это исполняемый файл с вызовом последнего, короче всё есть в ридми.

Bruce_Lee ★★
()
Последнее исправление: Bruce_Lee (всего исправлений: 1)
use neovim_lib::{self as nvim, neovim_api as nvim_api, NeovimApi, Value};

neovim nvim neovim nvim Neovim

прекрасный способ сломать себе мозг

MyTrooName ★★★★★
()
Ответ на: комментарий от I60R

А почему нет?

Писать обёртки на компилируемом языке — дичь дичайшая. Ты мог написать что угодно, но ты занялся фигнёй, ящитаю.

r3lgar ★★★★★
()
Ответ на: комментарий от MyTrooName

а что, --help нет?

Есть, конечно: structopt генерирует.
Лучше бы было выхлоп --help в README вставить?

прекрасный способ сломать себе мозг

neovim_lib переименовывается в nvim, а neovim_lib::neovim_api переименовывается в nvim_api — по моему это сильно упростило читаемость кода (кроме этой, единственной строчки импорта).
Мб есть какой-то способ это сделать проще?

I60R ★★
() автор топика
Ответ на: комментарий от r3lgar

Писать обёртки на компилируемом языке — дичь дичайшая.

Ну это не совсем обёртка. Есть IO, есть IPC, есть немного логики.
Кроме того, я не думаю, что на каком-то Python было бы меньше кода, или он был бы красивей. Изучать экосистемму Python — нет желания.
А ещё, компилируемый язык — прекрасный способ избежать некоторых дебильных ошибок.
И время запуска программы заметно выше

I60R ★★
() автор топика
Ответ на: комментарий от I60R

neovim_lib переименовывается в nvim, а neovim_lib::neovim_api переименовывается в nvim_api — по моему это сильно упростило читаемость кода

а NeovimApi остался NeovimApi, что вносит путаницу

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

MyTrooName ★★★★★
()
Ответ на: комментарий от r3lgar

Писать обёртки на компилируемом языке — дичь дичайшая

Нет, дичь — это эзотерические языки. Посмотри код, совершенно неподдерживаемая криптопись. Так что программка может и полезная, но никто её не подхватит и баги не поправит. Сколько раз повторять: хотите нормальный опенсорс, пишите на попсовых языках.

anonymous
()
Ответ на: комментарий от MyTrooName

neovim_api as nvim_api

Ну тут автор абсолютно точно попал в идиоматику руста. Такие высеры там начинаются сразу с ключевых слов, так что все норм. Дебильному языку — дебильный апи.

anonymous
()
Ответ на: комментарий от MyTrooName

прекрасный способ сломать себе мозг

Ну уж тебе-то бояться нечего.

anonymous
()

Автор молодец. Но лучше пойти с этим на /r/rust, там по коду вменяемо подскажут. Здешнюю сявскую помойку забудь, сюда только поржать можно прийти.

anonymous
()
Ответ на: комментарий от MyTrooName

а NeovimApi остался NeovimApi, что вносит путаницу

Но это ведь просто trait и в самом коде он не используется — используется лишь какой-то impl (только сейчас понял, что на github этого не видно).

сомневаюсь, стоило ли оно того вообще

Думаю, в будущем лучше так не делать

I60R ★★
() автор топика
Ответ на: комментарий от anonymous

Нет, дичь — это эзотерические языки. Посмотри код, совершенно неподдерживаемая криптопись.

Это ещё не ясно — я или Rust виноват? Вообще, когда читаю чужой код — всё довольно читабельно

никто её не подхватит и баги не поправит

Добро пожаловать в Issues

I60R ★★
() автор топика
Ответ на: комментарий от I60R

Это эпичное трололо, не кормить.

anonymous
()
Ответ на: комментарий от anonymous

Спасибо, на /r/rust я уже был. Сейчас там 25 upvotes, но вот код, видимо, никто не смотрел...

I60R ★★
() автор топика
Ответ на: комментарий от I60R

Но это ведь просто trait и в самом коде он не используется

тогда ок

Думаю, в будущем лучше так не делать

скорее всего так. не стоит того

MyTrooName ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.