인라인 이미지를위한 부드러운 (마우스) 스크롤?


23

begin_src 및 결과 블록과 함께 이미지를 표시합니다.

그러나 큰 이미지 의 경우 이미지 아래쪽 을 스크롤 하면 '저크'가 표시되고 전체 이미지가 스크롤됩니다. 마찬가지로 위로 스크롤하여 이미지를 실행하면 조금씩 점진적으로 보지 않고 멍청이가 전체 이미지를 봅니다.

이것은 org-mode에서 큰 plantuml / graphviz 다이어그램으로 작업하기 어렵게 만듭니다.

웹 브라우저에서와 같이 이미지를 부드럽게 넘기지 않고 부드럽게 스크롤하는 부드러운 스 칼링 경험을 원합니다.

나는 시도했다 :

(setq auto-window-vscroll nil)

그리고 또한

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

나는 부드러운 스크롤 패키지 와이 스 니펫 도 시도했습니다 .

그러나 인라인 이미지는 '한 줄'만 차지하고 emacs를 '한 줄'만 스크롤하도록 수정해도 문제가 해결되지 않습니다.

이 문제에 대한 해결책이 있습니까?

[편집] 마우스 스크롤 대 키보드 :

마우스 스크롤이 암시됩니다. 그러나 올바른 마우스 스크롤이 작동하면 키보드 스크롤이 보너스가됩니다.

[편집]
해결 방법은 다소 있지만, org-mode에서 이미지 작업에 유용한 파일 변경시 자동으로 다시로드되는 외부 앱에서 이미지를 여는 것이 었습니다. 예는 eog (eye of gnome)or shutter또는 prievew (on OS X)입니다. 다음 org-file-apps을 추가하여 구성 할 수 있습니다 .

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

키보드 기반 스크롤 또는 마우스 스크롤을 수행하고 있습니까?
mankoff

마우스 스크롤, 설명 주셔서 감사합니다.
Leo Ufimtsev

emacs에 패치가 필요할 수 있습니다. Mac 특정 포트의 기능 / 이점에 대해 잘 알고 있습니다 : github.com/railwaycat/emacs-mac-port/blob/master/README-mac 그러나 마우스조차도 마찬가지입니다. 키보드는 한 줄씩 움직이며 이미지는 한 줄 높이입니다.
mankoff

그런 패치를 갖는 것이 좋을 것입니다 ...
Leo Ufimtsev

방법에 대한 (setq scroll-conservatively 101)및 코멘트 다른 스크롤의 모든 설정에서 위의 질문에 언급하지 않도록 설정하는 것이 부드러운 스크롤 패키지 및 / 또는 조각? 상태에 대한 doc-string scroll-conservatively: " 값이 100보다 크면 다시 표시 할 때 최근 포인트가 표시되지 않지만 멀리 이동하더라도 포인트를 볼 수 있도록 항상 충분한 텍스트 만 스크롤합니다. 값이 0이면 항상 최근 포인트를 의미합니다. 화면
밖으로 나가면

답변:


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

아 네 맞아요. pixel-scroll.el의 설명서 문자열에 나온 지침을 따르고 있었지만 약간 다른 독자를위한 것 같습니다.
Matthew Palermo

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먼저 슬라이스 하도록 재정의 할 수 있습니까?
Adam

insert-sliced-image평가하여 읽을 수 있습니다 (describe-function 'insert-sliced-image). 문서에 추가 할 유용한 정교함이 없습니다. org-display-inline-images코드를 살펴 보았지만 이미지가 실제로 삽입되는 위치를 이해할 수 없습니다. 사용하기 위해 다시 작성할 수는 insert-sliced-image있지만 확실하게 수행하는 방법을 모르겠습니다.
Ista
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.