インライン画像のスムーズ(マウス)スクロール?


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)

smooth-scrollパッケージとこのスニペットも試しました。

ただし、インラインイメージは「1行」しか使用しないため、emacsを「1行」だけでスクロールするように修正しても問題は解決しません。

この問題の解決策はありますか?

[編集] キーボードとマウスのスクロール:

マウスのスクロールが暗示されています。ただし、適切なマウススクロールが機能する場合、キーボードスクロールはボーナスになります。

[編集]
やや回避策ですが、org-modeで画像を操作するのに便利なのは、ファイルの変更時に自動リロードする外部アプリで画像を開くことです。例はeog (eye of gnome)or shutterまたはprievew (on OS X)です。以下をorg-file-apps追加することで設定できます:

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

キーボードベースのスクロールまたはマウススクロールを行っていますか?
マンコフ

マウスのスクロール、説明をありがとう。
レオUfimtsev

emacsへのパッチが必要な場合があります。Mac固有のポートの機能/利点はスムーズスクロールであることがわかっています:github.com/railwaycat/emacs-mac-port/blob/master/README-macしかし、それでもマウスのみです。キーボードは行
単位で

...そのようなパッチを持っていいだろう
レオ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
トバイアス

ええ、あなたは正しいです。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

私が理解している問題は、画像が1行であることです。スクロールの動作を変更しても問題は解決しません。

私が知っている唯一の解決策は、技術的に多くの短い画像があるように画像をスライスすることです。これはを使用して実行できますinsert-sliced-image


の使用について詳しく説明していただけますinsert-sliced-imageか?org-toggle-inline-imagesこれらを最初にスライスするためにオーバーライドすることは可能ですか?
アダム

あなたはinsert-sliced-image評価することで読むことができます(describe-function 'insert-sliced-image)-私はドキュメントに追加する有用な詳細はありません。org-display-inline-imagesコードに目を通しましたが、実際に画像が挿入される場所がわかりません。use insert-sliced-imageに書き換えることは可能だと確信していますが、その方法はわかりません。
イスタ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.