Kann Occur den gefundenen Text im Puffer zentrieren?

7

Wenn Sie ein Element aus dem Puffer auswählen, befindet sich die hervorgehobene Zeile ganz unten im sichtbaren Bildschirm. Dies ist weniger nützlich als 25-50% des Bildschirms (daher ist es einfach, den Text um die gefundene Zeile herum zu lesen). Ist das möglich?

Aaron Lee
quelle

Antworten:

9

Ich sehe das Verhalten, das Sie beschreiben, überhaupt nicht. Wenn ich ein Vorkommen im Puffer auswähle, wird *Occur*das Vorkommen im Quellpuffer aufgerufen und dieser Schlag in die Mitte des Quellpufferfensters (vertikal) gestellt.

Wenn Sie jedoch sehen, was Sie beschreiben, setzen Sie einfach einen Code zum erneuten Zentrieren von Fenstern ein occur-mode-find-occurrence-hook.

Etwas wie das. Sie können eine beliebige Vergleichsbedingung verwenden. Hier habe ich "innerhalb von 10 Zeilen von oben oder unten" verwendet, aber Sie können Prozentsätze usw. verwenden.

(defun foo ()
  (let ((line   (line-number-at-pos)))
    (cond ((<= line (+ (line-number-at-pos (window-start)) 10))
           (recenter 10))
          ((>= line (- (line-number-at-pos (window-end)) 10))
           (recenter -10)))))

(add-hook 'occur-mode-find-occurrence-hook 'foo)
Drew
quelle
1
Ja, das wird es tun. Ich verstehe das Verhalten von OP, FWIW.
Dan
Seltsam, dass ich das dann nicht tue. emacs -Qunter MS Windows 7. Alle Treffer, auf die ich im Auftrittspuffer klicke (oder die ich verwende RET), werden vertikal zentriert im Quellpuffer angezeigt.
Drew
Sie haben Recht, emacs -Q(unter Linux) gibt das Verhalten, das Sie beschreiben. Irgendwo muss etwas begraben sein, ist das Setup.
Dan