Scorrimento uniforme (del mouse) per le immagini incorporate?


23

Visualizzo le immagini in linea con begin_src e blocchi dei risultati.

Tuttavia, per immagini di grandi dimensioni, quando scorro oltre la parte inferiore dell'immagine, ottengo un "coglione" e l'intera immagine viene fatta scorrere via. Allo stesso modo, se scorro verso l'alto e mi imbatto in un'immagine, ottengo un coglione e vedo l'intera immagine invece di vederla in modo incrementale poco a poco.

Questo rende difficile lavorare con grandi diagrammi plantum / graphviz in modalità org.

Vorrei un'esperienza fluida di scoll, scorrere delicatamente l'immagine come in un browser Web, senza strappi.

Ho provato:

(setq auto-window-vscroll nil)

e anche

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

Ho provato il pacchetto smooth-scroll e anche questo frammento .

Tuttavia, sembra che un'immagine in linea occupi solo "una riga" e correggere emacs per scorrere solo con "una riga" non risolve il problema.

Qualche soluzione a questo problema?

[modifica] Scorrimento tastiera vs mouse:

Lo scorrimento del mouse è implicito. Ma lo scorrimento della tastiera sarebbe un vantaggio se lo scorrimento corretto del mouse funzionasse.

[modifica]
Un po 'una soluzione alternativa, ma utile per lavorare con le immagini in modalità organizzazione era aprirle in un'app esterna che si ricaricasse automaticamente al cambio di file. L'esempio sarebbe eog (eye of gnome)o shuttero prievew (on OS X). Può essere configurato tramite l' org-file-appsaggiunta di:

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

Stai eseguendo lo scorrimento basato su tastiera o lo scorrimento del mouse?
mankoff,

scorrimento del mouse, grazie per il chiarimento.
Leo Ufimtsev,

Potrebbe richiedere una patch per emacs. So che le funzionalità / i vantaggi della porta specifica per Mac sono scorrevoli: github.com/railwaycat/emacs-mac-port/blob/master/README-mac Ma anche quello è solo per il mouse. Le tastiere si muovono per linee e le immagini sono alte solo una riga ...
mankoff

Sarebbe bello avere una patch del genere ...
Leo Ufimtsev il

Che ne dici di (setq scroll-conservatively 101)commentare tutte le altre impostazioni di scorrimento menzionate nella domanda precedente e disabilitare quel pacchetto di scorrimento e / o frammento liscio? La stringa di documenti per gli scroll-conservativelystati: " Se il valore è maggiore di 100, il display non visualizzerà mai il punto più recente, ma scorrerà sempre il testo sufficiente per visualizzare il punto, anche se ti sposti lontano. Un valore zero significa punto sempre più recente se si sposta
dallo

Risposte:


7

Da Emacs 26.1, il buffer può essere fatto scorrere da singoli pixel anziché solo da linee che possono essere usate per scorrere uniformemente le immagini usando la rotellina del mouse. Per raggiungere questo obiettivo ho usato la seguente configurazione:

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

Modificare:

Ho scoperto che questa soluzione presenta alcuni avvertimenti che potrebbero essere utili per sapere:

  • Scorrendo su un'immagine più in alto rispetto alla finestra, continuerà comunque il grande salto sbilenco che vede scorrere la finestra fino a quando l'immagine non è più visibile (la riga successiva si trova nella parte superiore della finestra).
  • Non è possibile rendere l'istante di scorrimento (meno intensivo) ma scorrere comunque per pixel anziché per linee.
  • Quando viene emesso un nuovo evento di scorrimento prima che l'animazione esistente sia terminata, la finestra passa all'inizio dell'animazione successiva causando una discontinuità nello scorrimento uniforme.
  • Molte persone hanno sperimentato un tale degrado delle prestazioni usando questo metodo che semplicemente non è utilizzabile. Apparentemente questo è comune quando vengono utilizzate alcune modifiche alla linea di modalità.

Non dovresti aver bisogno (require 'pixel-scroll)poiché pixel-scroll-modeviene caricato automaticamente.
Tobias,

Ah sì, hai ragione. Stavo solo seguendo le istruzioni nella stringa di documentazione in pixel-scroll.el ma immagino che siano per un pubblico leggermente diverso.
Matthew Palermo,

1

Cosa ne pensi di questo:

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

Il problema a quanto ho capito è che l'immagine è una riga singola. La modifica del comportamento dello scorrimento non risolverà il problema.

L'unica soluzione di cui sono a conoscenza è quella di suddividere l'immagine in modo che ci siano tecnicamente molte immagini più brevi. Questo può essere fatto usando insert-sliced-image.


Puoi approfondire l'uso di insert-sliced-image? È possibile ignorare org-toggle-inline-imagesper prima cosa suddividerli?
Adam

Puoi leggere insert-sliced-imagevalutando (describe-function 'insert-sliced-image): non ho elaborazioni utili da aggiungere alla documentazione. Ho controllato il org-display-inline-imagescodice ma non riesco a capire dove vengano effettivamente inserite le immagini. Sono sicuro che è possibile riscriverlo per usarlo insert-sliced-image, ma non vedo come farlo.
Ista,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.