Emacs - move cursor back after mark-whole-buffer & indent-region

4

1

I'm Emacs newbie and for automatic re-formating of my source codes in Emacs I've created simple macro using mark-whole-buffer and indent-region commands, mapped to C-j shortcut:

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

However, when executed, the original position of cursor is lost and new cursor position is set to the beginning of the buffer. Is there any way how to perform this macro and return the cursor back to its previous position? I'm using GNU/Emacs 24.3 on Ubuntu 14.04.

Thanks

xwinus

Posted 2014-08-09T09:31:46.703

Reputation: 143

Answers

2

Instead of using a macro, consider using a function. The function indent-region contains arguments for the beginning and ending of the region. Thus, you could evaluate (indent-region (point-min) (point-max)) to handle the entire buffer. You could also use a simple function to do the same thing:

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

Although not needed here, in the future you may need to use something like save-excursion which brings you back to the original point.

lawlist

Posted 2014-08-09T09:31:46.703

Reputation: 1 287

1solved my problem, thank you very much, unfortunately cannot give you +1 now because of my low reputation level – xwinus – 2014-08-09T17:30:50.850