Emacs - Bewegt den Cursor nach Markierungspuffer und Einrückungsbereich zurück

471
xwinus

Ich bin Emacs-Neuling und für die automatische Neuformatierung meiner Quellcodes in Emacs habe ich einfache Makros mark-whole-bufferund indent-regionBefehle erstellt, die der Cj-Verknüpfung zugeordnet sind:

(fset 'format-document "\C-[xmark-whole-buffer\C-m\C-[xindent-region\C-m") (global-set-key (kbd "C-j") 'format-document) 

Bei der Ausführung geht jedoch die ursprüngliche Cursorposition verloren und die neue Cursorposition wird an den Anfang des Puffers gesetzt. Gibt es eine Möglichkeit, dieses Makro auszuführen und den Cursor an seine vorherige Position zurückzusetzen? Ich verwende GNU / Emacs 24.3 auf Ubuntu 14.04.

Vielen Dank

4

1 Antwort auf die Frage

2
lawlist

Anstelle eines Makros sollten Sie auch eine Funktion verwenden. Die Funktion indent-regionenthält Argumente für den Anfang und das Ende der Region. So könnten Sie auswerten (indent-region (point-min) (point-max)), den gesamten Puffer zu behandeln. Sie können auch eine einfache Funktion verwenden, um dasselbe zu tun:

(defun my-format-document () (interactive) (indent-region (point-min) (point-max)) ) 

Auch wenn Sie hier nicht benötigt werden, müssen Sie in der Zukunft möglicherweise etwas verwenden, save-excursionwas Sie zum ursprünglichen Punkt zurückbringt.

Mein Problem gelöst, vielen Dank, leider kann ich Ihnen jetzt kein +1 geben, da mein Ruf nicht so gut ist xwinus vor 10 Jahren 1