4

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

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.

  • 1
    solved my problem, thank you very much, unfortunately cannot give you +1 now because of my low reputation level – xwinus Aug 9 '14 at 17:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.