LINUX.ORG.RU

Возможна ли плавная прокрутка в Emacs?

 


2

2

Или это недоступные технологии для Lisp хакеров?

Включаю в GNU Emacs 30.1

(pixel-scroll-precision-mode t)
(mouse-wheel-progressive-speed nil)

  • 1. И если выделить последнюю видимую строку в редакторе, и переместить мышь ниже что бы спровоцировать скролл, все начнет дергаться и мигать, никакой плавной прокрутки нет. А возможна?
  • 2. Я отключил прогрессивную прокрутку, но она все равно то медленно то быстро крутится, нужно как в Chrome, IDEA.

БОНУС: Демонстрация плавной прокрутки в терминале vt320, которым пользовался фараон Нармер для быстрой отправки писем по своему государству в тридцать втором веке до нашей эры https://youtu.be/tSJfzrSA0ec?t=5

★★★★★

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

Вообще тормозит вроде бы отрисовка кода в цветных шрифтах, она вроде пересчитывается при каждом изменении видимой области текста.

Попробуй открыть свой файл и включить pixel-scroll-mode, pixel-scroll-precision-mode, fundamental-mode, должно быть плавно.

masa ★★
()

В 29 версии pixel-scroll-precision-mode хорошо работал, даже на тачпаде можно было попиксельно прокручивать, а в 30 что-то сломали, да.

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

Да, я попробовал твой совет, но и так было понятно что дело не в этом, я пробую на маленьком файле и у меня i9, я не думаю что Emacs так плохо написан.

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

Это для специализированных устройств ввода, так написано на GitHub странице. У меня нету макбука, трекпада, или чего то такого. У меня просто мышка и клавиатура, обычные.

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

Сишная часть может и хорошо, а вот плагины всякие, тем боле для гуя не очень.

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

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

У меня ultra-scroll подвисает если строки длинные, так что экран их показыват переносом на другую строку. А польза как раз была бы при работе с текстами, где такого полно, и там часто приходится скролить, чтобы пробежаться по всему тексту глазами.

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

Ну это связано с реализацией его гуя. Если есть возможность по пиксельно то в зависимости от ДЕ, дров, x11/wayland, GPU, CPU и т.д. она будет плавная. Если в проге нету этого то увы.

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

? Може это:

view.el has both View-scroll-half-page-forward and View-scroll-half-page-backward 
...
A quick and dirty way to do it with default configuration would be "M-r C-l C-l" to move half a screen up. Or "M-r M-r C-l" to move half a screen down. 
mx__ ★★★★★
()
Ответ на: комментарий от MOPKOBKA

Тогда я не совсем понимаю, что ты хочешь. Чтобы С-n, C-v тоже плавно перемещало буфер? Ну по логике они перемещают сразу по строкам, поэтому не плавно. В теории наверняка можно так же интерполировать как для мыши прокрутку.

Вот нашел есть настройка для PgUp PgDown

pixel-scroll-precision-interpolate-page is a variable defined in ‘pixel-scroll.el’.

Its value is t
Original value was nil

Whether or not to interpolate scrolling via the Page Down and Page Up keys.
This is only effective when ‘pixel-scroll-precision-mode’ is enabled.

  This variable was introduced, or its default value was changed, in
  version 29.1 of Emacs.
  You can customize this variable.

Но действует только для для этих кнопок, странно, почему не сделали для всего.

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

Тогда я не совсем понимаю, что ты хочешь.

Что бы перемещение выделения, курсора было плавным как в VSCode и других редакторах к которым я привык.

Для PageUp, PageDown ты нашел настройку, вот такую бы для всего перемещения еще.

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

Давно не пользуюсь ничем кроме емакса, уже атрофировались чувства :) К удивлению плавный скроллинг стал работать намного лучше чем 10 лет назад.

https://github.com/emacs-mirror/emacs/blob/master/lisp/pixel-scroll.el#L119-L149

Насколько я понял логику этого пиксель скрола, он вешается на инпут с мышки и клавы и работает только от них. Поэтому и не работает при перемещении курсора по буферу.

Вот тут человек пытался решить эту проблему с правильной стороны https://github.com/emacsmirror/scroll-on-jump

Но получилось судя по всему как-то сложно и ненадежно, надо на каждую функцию прописывать макрос

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

Еще может от прыжков мышки будет удобнее поставить (setq scroll-conservatively 101)

Я отключил прогрессивную прокрутку, но она все равно то медленно то быстро крутится

А вот это похоже на лаги, куда курсор попал и что тригернулось.

Всякие там display-line-numbers-type 'relative, подсветку текущей строки, и подсветку таких же слов, скобочек, lsp серверы, это все лучше отключать, если хочется отзывчивости

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

Еще может от прыжков мышки будет удобнее поставить (setq scroll-conservatively 101)

Так стало намного лучше, еще я заметил что скорость выделения мышкой двигает экраны слишком быстро, в других редакторах есть ограничение скорости, как бы его поставить?

В Emacs буквально весь файл моментально можно выделить, если отвести мышь слишком далеко вниз.

Всякие там display-line-numbers-type 'relative, подсветку текущей строки, и подсветку таких же слов, скобочек, lsp серверы, это все лучше отключать, если хочется отзывчивости

Включена только подсветка строки, скобок, и линейка строк, неужели даже i9 мало для этого? Наверное так и есть, я еще заметил иногда выделение следует за мышкой построчно, явно подлагивание.

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

У Lisp крайне маленькое сообщество, поэтому кроме Emacs ничего стоящего и нету, ну разве что проприетарные IDE за 200 000 рублей в базовой версии для домашнего использования.

Но использование Emacs это настоящая пытка, постоянно все зависает и вылетает. Конечно это скорее зависит от slime и paredit, но такого ужасного процесса я буквально еще не видел.

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

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

Но а вообще там диалектов много. Тот же кложур

А еще и guix с Scheme

По Имаксу: все попытки пересоздать Имакс на другом ЯП ведут к тормозящему atom или другой поделке, очень похожему на него. Имакс хоть и со скрипом, но всё же работает и свои задачи выполняет. Заменить его нечем. Да и не нужно это

Но использование Emacs это настоящая пытка, постоянно все зависает и вылетает

Да всё там работает, не выдумывай. Я им пользуюсь около 9 лет. Не делаю из него комбайн, но вижу как его юзают другие и офигеваю: он и почтовик и телеграм клиент и рсс ридер и гит клиент и чуть ли кофе не варит с утра

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

По Имаксу: все попытки пересоздать Имакс на другом ЯП ведут к тормозящему Atom

Atom это лишь проект-первопроходец, GNU Emacs тоже не первый Emacs, а вот VSCode работает очень быстро даже на огромных файлах, это даже удивительно когда смотришь на другие редакторы.

Вообще о какой быстроте идет речь, когда Emacs зависает на каждой операции, и с двумя установленными плагинами уже еле работает выделение? Вот в IDEA отдельно процесс редактирования, отдельно все остальное, и она имеет один из самых низких инпут-лагов, и сравнима только с олдускульными программами на чистом xlib, таких как XTerm.

Да всё там работает, не выдумывай

Не выдумываю, вообще нервно смеюсь когда вспоминаю о выдумках лисперов о их безостановочном REPL процессе, да у меня такое ощущение что я и часа стабильно просидеть не могу (хотя наверное все же раз в 3-4 часа вылетает).

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

Я на Имаксе сидел на кор2 + 4гб рам. Я не думаю, что я мог бы работать на VSCode на такой конфигурации

Вообще о какой быстроте идет речь, когда Emacs зависает на каждой операции, и с двумя установленными плагинами уже еле работает выделение?

Имакс - не про скорость, а про функциональность. Я не лезу во всякие REPL и прочее. Я пользуюсь им как текстовым редактором. Если что-то глюкавит или не так работает, то велкам в конфу emacs в телеге. Там спроси - может что-то подскажут

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

Я на Имаксе сидел на кор2 + 4гб рам. Я не думаю, что я мог бы работать на VSCode на такой конфигурации

У меня процессор лучше был, но памяти столько же, я даже WSL контейнер запускал и программировал в VSCode. Кстати, CLion после полного разбора ядра Linux потребляет меньше 2 гб памяти.

Имакс - не про скорость, а про функциональность.

Строго определенную, многое из того что я хочу в Emacs, и есть в IDE в нем нету, и видимо наоборот, пользователи Emacs хотят читать IRC и почту в своем редакторе, и жалуются на VSCode.

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

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

У меня процессор лучше был, я даже WSL контейнер запускал и программировал в VSCode. Кстати, CLion после полного разбора ядра Linux потребляет меньше 2 гб памяти.

При потреблении 1.5гб памяти у меня бы с докерами всё уходило бы в своп и становилось бы неюзабельным

Открыто 5 py файлов по 200-300 строк

ps_mem |grep emacs
  1.4 MiB +  13.5 KiB =   1.4 MiB       emacsql-sqlite
203.0 MiB +   1.6 MiB = 204.6 MiB       emacs-29.4

Строго определенную, многое из того что я хочу в Emacs, и есть в IDE в нем нету, и видимо наоборот, пользователи Emacs хотят читать IRC и почту в своем редакторе, и жалуются на VSCode.

Это программируемый текстовый редактор. Чего-то нет - можно написать или найти готовое. Всё нужное там есть с избытком

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

У меня как раз причина почему я сел на emacs была в том, что JetBrain’новские IDE еле шевелились, это еще во времена кор2дуо. Там еще была кнопка такая, которая снижала потребление энергии, вот если ее не прожимать, то инпут лаг был 200-500 мс, буквы появлялис медленнее, чем нажимались кнопки, ну ивесь интерфейс вязкий.

В емаксе тоже все было не идеально, но там хотя бы отключалось все ненужное, в отличии от JB.

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

Попробуй открыть настоящий проект, и добавить потребление запущенного lsp-сервера.

Потребление lsp-сервера везде одинаковое. Причем тут лсп до Имакса? А так-то да, ниже отписали Ъ про jetbrain ide, что оно хавает ресурсы и тормозит нехило, в отличие от Имакса

serg002 ★★★★
()