Плавне прокручування миші для вбудованих зображень?


23

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

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

Це ускладнює роботу з великими діаграмами plantuml / graphviz в org-режимі.

Мені б хотілося, щоб плавно випробовувалося, щоб акуратно прокрутити зображення, як у веб-браузері, не смикаючись.

Я намагався:

(setq auto-window-vscroll nil)

і також

(setq scroll-margin 1
scroll-conservatively 0
scroll-up-aggressively 0.01
scroll-down-aggressively 0.01)

Я спробував пакет з прокруткою і цей фрагмент також.

Однак, здається, що рядкове зображення займає лише "однорядку", а виправлення emacs для прокрутки лише "однолінійним" не вирішує проблему.

Будь-яке рішення цього питання?

[редагувати] Прокрутка клавіатури проти миші:

Прокручування миші має на увазі. Але прокрутка клавіатури буде бонусом, якщо справна прокрутка миші спрацює.

[ред.]
Дещо обхідним, але корисним для роботи із зображеннями в org-режимі було відкриття їх у зовнішньому додатку, який автоматично завантажує зміни файлів. Прикладом може бути , eog (eye of gnome)або , shutterабо prievew (on OS X). Це можна налаштувати за org-file-appsдопомогою додавання:

extension: \.png\'
Command:   eog "%s"

Ви робите клавіатуру прокрутки на основі клавіатури чи миші?
mankoff

прокручування миші, дякую за роз’яснення.
Лев Уфімцев

Може знадобитися патч для emacs. Я знаю, про особливості / переваги порту, характерного для Mac, є плавна прокрутка: github.com/railwaycat/emacs-mac-port/blob/master/README-mac Але навіть це лише миша. Клавіатури рухаються по лініях, а зображення лише на одну лінію ...
mankoff

Було б непогано мати такий патч ...
Лев Уфімцев

Як щодо (setq scroll-conservatively 101)та прокоментуйте всі інші налаштування прокрутки, згадані у вищезазначеному питанні, і відключіть цей плавний пакет прокрутки та / або фрагмент? Документ-рядок для scroll-conservativelyдержав: " Якщо значення більше 100, повторне відображення ніколи не перегляне точку, але завжди буде прокручувати достатньо тексту, щоб вивести точку зору, навіть якщо ви віддаляєтеся далеко. Значення нуля означає завжди точку перегляду" якщо він перейде з екрану ".
Закончик

Відповіді:


7

Оскільки Emacs 26.1, буфер може прокручуватися окремими пікселями, а не просто лініями, які можна використовувати для плавного прокручування зображень за допомогою колеса миші. Для цього я використав таку конфігурацію:

;;; Scrolling.
;; Good speed and allow scrolling through large images (pixel-scroll).
;; Note: Scroll lags when point must be moved but increasing the number
;;       of lines that point moves in pixel-scroll.el ruins large image
;;       scrolling. So unfortunately I think we'll just have to live with
;;       this.
(pixel-scroll-mode)
(setq pixel-dead-time 0) ; Never go back to the old scrolling behaviour.
(setq pixel-resolution-fine-flag t) ; Scroll by number of pixels instead of lines (t = frame-char-height pixels).
(setq mouse-wheel-scroll-amount '(1)) ; Distance in pixel-resolution to scroll each mouse wheel event.
(setq mouse-wheel-progressive-speed nil) ; Progressive speed is too fast for me.

Редагувати:

Я виявив, що в цьому рішенні є кілька застережень, які можуть бути корисними:

  • Прокручування зображення вище, ніж вікно, все ще спричинить великий стрибок, який бачить прокручування вікна, поки зображення не буде видно (наступний рядок знаходиться у верхній частині вікна).
  • Ви не можете зробити момент прокрутки (менш інтенсивний), але все ж прокручувати пікселі, а не лінії.
  • Коли нова подія прокрутки видається до завершення існуючої анімації, вікно переходить на початок наступної анімації, викликаючи розрив у плавному прокручуванні.
  • Багато людей зазнали такого зниження продуктивності за допомогою цього методу, що його просто не можна використовувати. Мабуть, це часто, коли використовуються деякі модифікації рядків режиму.

Вам не потрібно, (require 'pixel-scroll)оскільки pixel-scroll-modeзавантажується автоматично.
Тобіас

Ага так, ти маєш рацію. Я просто дотримувався вказівок у документаційному рядку в pixel-scroll.el, але, мабуть, вони для трохи іншої аудиторії.
Метью Палермо

1

Як щодо цього:

;; scroll one line at a time (less "jumpy" than defaults)
(setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time
(setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling
(setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse
(setq scroll-step 1) ;; keyboard scroll one line at a time

1

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

Я знаю єдине рішення - нарізати зображення так, щоб технічно було багато коротших зображень. Це можна зробити за допомогою insert-sliced-image.


Чи можете ви детальніше розглянути питання про використання insert-sliced-image? Чи можна перекрити org-toggle-inline-imagesперший фрагмент?
Адам

Ви можете прочитати про це insert-sliced-image, оцінивши (describe-function 'insert-sliced-image)- я не маю жодної корисної розробки, яку б додати до документації. Я переглянув org-display-inline-imagesкод, але не можу зрозуміти, куди насправді вставляються зображення. Я впевнений, що це можливо переписати для використання insert-sliced-image, але я не бачу, як це зробити.
Іста
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.