Cuộn (chuột) mượt mà cho hình ảnh nội tuyến?


23

Tôi hiển thị hình ảnh thẳng hàng với các khối start_src và kết quả.

Tuy nhiên, đối với các hình ảnh lớn, khi tôi cuộn qua phần dưới của hình ảnh, tôi nhận được một "cú giật" và toàn bộ hình ảnh được cuộn đi. Tương tự như vậy nếu tôi cuộn lên và chạy vào một hình ảnh, tôi bị giật và nhìn thấy toàn bộ hình ảnh thay vì nhìn thấy nó từng chút một.

Điều này làm cho nó khó làm việc với các sơ đồ plantuml / graphviz lớn trong chế độ org.

Tôi muốn có một trải nghiệm mượt mà, để nhẹ nhàng cuộn qua hình ảnh như trong trình duyệt web, mà không bị giật.

Tôi đã thử:

(setq auto-window-vscroll nil)

và cũng

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

Tôi đã thử gói cuộn trơn tru và đoạn này cũng có.

Tuy nhiên, có vẻ như một hình ảnh nội tuyến chỉ chiếm 'một dòng' và sửa các emacs để chỉ cuộn bằng 'một dòng' không khắc phục được sự cố.

Bất kỳ giải pháp cho vấn đề này?

[sửa] Bàn phím vs Chuột cuộn:

Chuột cuộn được ngụ ý. Nhưng cuộn bàn phím sẽ là một phần thưởng nếu cuộn chuột thích hợp sẽ hoạt động.

[sửa]
Một cách giải quyết khác, nhưng hữu ích khi làm việc với hình ảnh ở chế độ org là mở chúng trong một ứng dụng bên ngoài có thể tự động tải lại khi thay đổi tệp. Ví dụ sẽ là eog (eye of gnome)hay shutterhay prievew (on OS X). Nó có thể được cấu hình thông qua org-file-appsbằng cách thêm:

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

Bạn đang thực hiện cuộn dựa trên bàn phím hoặc cuộn chuột?
mankoff

di chuột, cảm ơn bạn đã làm rõ.
Leo Ufimtsev

Có thể yêu cầu một bản vá để emacs. Tôi biết các tính năng / lợi ích của cổng dành riêng cho máy Mac là cuộn trơn tru: github.com/railwaycat/emacs-mac-port/blob/master/README-mac Nhưng ngay cả đó chỉ là chuột. Bàn phím di chuyển theo dòng và hình ảnh chỉ cao một dòng ...
mankoff

Thật tuyệt khi có một bản vá như thế ...
Leo Ufimtsev

Làm thế nào về (setq scroll-conservatively 101)và nhận xét tất cả các cài đặt cuộn khác của bạn được đề cập trong câu hỏi ở trên và vô hiệu hóa gói cuộn và / hoặc đoạn trích trơn tru đó? Chuỗi doc cho scroll-conservativelycác trạng thái: " Nếu giá trị lớn hơn 100, hiển thị lại sẽ không bao giờ lấy lại điểm, nhưng sẽ luôn cuộn vừa đủ văn bản để đưa điểm vào tầm nhìn, ngay cả khi bạn di chuyển xa. Giá trị bằng 0 luôn có nghĩa là điểm hồi quy nếu nó di chuyển khỏi màn hình. "
luật

Câu trả lời:


7

Kể từ Emacs 26.1, bộ đệm có thể được cuộn theo từng pixel thay vì chỉ các dòng có thể được sử dụng để cuộn trơn tru các hình ảnh bằng cách sử dụng bánh xe chuột. Để đạt được điều này tôi đã sử dụng cấu hình sau:

;;; 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.

Chỉnh sửa:

Tôi đã thấy rằng giải pháp này có một vài cảnh báo có thể hữu ích để biết:

  • Cuộn qua một hình ảnh cao hơn cửa sổ sẽ vẫn gây ra một cú nhảy chói tai lớn khi nhìn thấy cuộn cửa sổ cho đến khi hình ảnh không còn hiển thị nữa (dòng tiếp theo nằm ở trên cùng của cửa sổ).
  • Bạn không thể thực hiện cuộn tức thời (ít chuyên sâu hơn) nhưng vẫn cuộn theo pixel thay vì đường.
  • Khi một sự kiện cuộn mới được phát ra trước khi hoạt ảnh hiện tại kết thúc, cửa sổ sẽ nhảy đến điểm bắt đầu của hoạt hình tiếp theo gây ra sự gián đoạn trong quá trình cuộn trơn tru.
  • Nhiều người đã trải qua sự suy giảm hiệu suất như vậy bằng cách sử dụng phương pháp này mà chỉ đơn giản là không thể sử dụng được. Rõ ràng điều này là phổ biến khi một số sửa đổi dòng chế độ được sử dụng.

Bạn không nên cần (require 'pixel-scroll)từ pixel-scroll-modelà tính năng tự động nạp.
Tobias

À đúng rồi, bạn đúng. Tôi chỉ làm theo các hướng dẫn trong chuỗi tài liệu trong pixel-scroll.el nhưng tôi đoán chúng dành cho đối tượng hơi khác.
Matthew Palermo

1

Còn cái này thì sao:

;; 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

Vấn đề theo tôi hiểu là hình ảnh là một dòng duy nhất. Thay đổi cách cuộn hành xử sẽ không giải quyết vấn đề.

Giải pháp duy nhất tôi biết là cắt hình ảnh lên để có nhiều hình ảnh ngắn hơn về mặt kỹ thuật. Điều này có thể được thực hiện bằng cách sử dụng insert-sliced-image.


Bạn có thể giải thích về việc sử dụng insert-sliced-image? Có thể ghi đè org-toggle-inline-imagesđể cắt lát đầu tiên?
Adam

Bạn có thể đọc về insert-sliced-imagebằng cách đánh giá (describe-function 'insert-sliced-image)- Tôi không có bất kỳ công phu hữu ích nào để thêm vào tài liệu. Tôi đã xem qua org-display-inline-imagesmã nhưng tôi không thể hiểu hình ảnh thực sự được chèn vào đâu. Tôi chắc chắn có thể viết lại để sử dụng insert-sliced-image, nhưng tôi không thấy cách thực hiện.
Ista
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.