F: Gibt es eine Möglichkeit, am oberen und unteren Rand eines Fensters unterschiedliche Bildlaufränder festzulegen?
Die Variable scroll-margin
(im C-Quellcode definiert) legt fest, wie viele Textzeilen Emacs mindestens oben und unten in einem Fenster anzeigt:
Anzahl der Randlinien am oberen und unteren Rand eines Fensters. Zentrieren Sie das Fenster neu, wenn der Punkt innerhalb dieser vielen Zeilen oben oder unten im Fenster liegt.
Ich möchte es scroll-margin
für den unteren Rand des Fensters verwenden, möchte es aber nicht oben (z. B. einen positiven Wert unten, aber 0 oben). Gibt es eine Möglichkeit dazu?
scroll-margin
ist sie nicht das richtige Werkzeug für den Job. Möglicherweise müssen Sie eine Funktion aktivieren, umpost-command-hook
zu bestimmen, ob das Fenster gescrollt werden soll.(top . bottom)
für zuzulassenscroll-margin
.window-scroll-functions
Hook spielen (für den zwei Argumente erforderlich sind ) und einenrecenter
Befehl in eine an diesen Hook angehängte Funktion(setq scroll-conservatively 101)
einfügen. Anschließend verwenden Sie die Einstellung - im Wesentlichen definieren Sie, wann eine erneute Zentrierung erfolgt, und deaktivieren das integrierte Auto -scrollen. So etwas wie(when (and (>= (point) (window-end nil t)) (not (pos-visible-in-window-p (point) (get-buffer-window (current-buffer) (selected-frame))))) (recenter))
Antworten:
Folgendes funktioniert für mich:
Beachten Sie, dass dies theoretisch ineffizient ist, die Leistung auf meinem lahmen Computer jedoch nicht beeinträchtigt zu sein scheint.
quelle