Gulir halus (mouse) untuk gambar sebaris?

23

Saya menampilkan gambar sesuai dengan begin_src & blok hasil.

Namun, untuk gambar besar, ketika saya menggulir melewati bagian bawah gambar, saya mendapatkan 'brengsek' dan seluruh gambar digulir menjauh. Demikian pula jika saya menggulir ke atas dan berlari ke dalam gambar, saya mendapatkan brengsek dan melihat seluruh gambar bukannya melihatnya secara bertahap sedikit demi sedikit.

Ini membuatnya sulit untuk bekerja dengan diagram plantuml / graphviz besar dalam mode-org.

Saya ingin pengalaman scoll yang lancar, untuk menggulir dengan lembut melewati gambar seperti di browser web, tanpa menyentak.

Saya telah mencoba:

(setq auto-window-vscroll nil)

dan juga

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

Saya mencoba paket gulir-halus dan potongan ini juga.

Namun, sepertinya gambar in-line hanya membutuhkan 'satu-baris' dan memperbaiki emacs untuk menggulir hanya dengan 'satu-baris' tidak memperbaiki masalah.

Ada solusi untuk masalah ini?

[Sunting] Keyboard vs Mouse bergulir:

Pengguliran mouse tersirat. Tetapi bergulir keyboard akan menjadi bonus jika bergulir mouse yang tepat akan berhasil.

[Sunting]
Agak solusinya, tetapi berguna untuk bekerja dengan gambar dalam mode org adalah untuk membukanya di aplikasi eksternal yang secara otomatis memuat ulang pada perubahan file. Contohnya adalah eog (eye of gnome)atau shutteratau prievew (on OS X). Itu dapat dikonfigurasi melalui org-file-appsdengan menambahkan:

extension: \.png\'
Command:   eog "%s"
Leo Ufimtsev
sumber
Apakah Anda melakukan pengguliran berbasis keyboard atau gulir mouse?
mankoff
gulir mouse, terima kasih atas klarifikasi.
Leo Ufimtsev
Mungkin memerlukan tambalan untuk emacs. Saya tahu tentang fitur / manfaat port khusus Mac yang dapat digulirkan dengan lancar: github.com/railwaycat/emacs-mac-port/blob/master/README-mac Tetapi bahkan itu hanya untuk mouse. Papan
tombol
Akan menyenangkan memiliki tambalan seperti itu ...
Leo Ufimtsev
Bagaimana dengan (setq scroll-conservatively 101)dan komentar semua pengaturan gulir Anda yang lain yang disebutkan dalam pertanyaan di atas dan nonaktifkan paket gulir halus dan / atau cuplikan? Doc-string untuk scroll-conservativelymenyatakan: " Jika nilainya lebih besar dari 100, tampilan ulang tidak akan pernah menampilkan kembali titik, tetapi akan selalu menggulir cukup teks untuk membawa titik ke tampilan, bahkan jika Anda bergerak jauh. Nilai nol berarti selalu titik kembali jika bergerak dari layar. "
lawlist

Jawaban:

7

Sejak Emacs 26.1, buffer dapat digulirkan dengan piksel individual, bukan hanya garis yang dapat digunakan untuk menggulir gambar dengan lancar menggunakan roda mouse. Untuk mencapai ini saya telah menggunakan konfigurasi berikut:

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

Edit:

Saya telah menemukan bahwa solusi ini memiliki beberapa peringatan yang mungkin berguna untuk diketahui:

  • Menggulir gambar yang lebih tinggi dari jendela akan tetap menyebabkan lompatan besar yang melihat gulir jendela sampai gambar tidak lagi terlihat (baris berikutnya ada di bagian atas jendela).
  • Anda tidak dapat membuat pengguliran instan (kurang intensif) tetapi masih menggulir berdasarkan piksel daripada garis.
  • Ketika acara gulir baru dikeluarkan sebelum animasi yang ada selesai, jendela melompat ke awal animasi berikutnya menyebabkan diskontinuitas dalam pengguliran halus.
  • Banyak orang mengalami penurunan kinerja menggunakan metode ini sehingga tidak dapat digunakan. Tampaknya ini biasa terjadi ketika beberapa modifikasi garis mode digunakan.
Matthew Palermo
sumber
Anda tidak perlu (require 'pixel-scroll)karena pixel-scroll-modesudah dimuat secara otomatis.
Tobias
Ah ya, kamu benar. Saya hanya mengikuti instruksi dalam string dokumentasi dalam pixel-scroll.el tapi saya kira itu untuk audiens yang sedikit berbeda.
Matthew Palermo
1

Bagaimana dengan ini:

;; 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
C137
sumber
1

Masalahnya seperti yang saya mengerti adalah bahwa gambar adalah satu baris. Mengubah perilaku bergulir tidak akan menyelesaikan masalah.

Satu-satunya solusi yang saya ketahui adalah mengiris gambar sehingga ada banyak gambar yang secara teknis lebih pendek. Ini bisa dilakukan menggunakan insert-sliced-image.

Ista
sumber
Bisakah Anda menguraikan penggunaan insert-sliced-image? Apakah mungkin untuk mengganti org-toggle-inline-imagesterlebih dahulu untuk mengiris ini?
Adam
Anda dapat membaca tentang insert-sliced-imagedengan mengevaluasi (describe-function 'insert-sliced-image)- Saya tidak memiliki penjelasan yang berguna untuk ditambahkan ke dokumentasi. Saya melihat-lihat org-display-inline-imageskode tetapi saya tidak bisa mengerti di mana gambar benar-benar dimasukkan. Saya yakin mungkin menulis ulang untuk digunakan insert-sliced-image, tetapi saya tidak tahu bagaimana melakukannya.
Ista