Emacs - move o cursor de volta após mark-whole-buffer & indent-region

4

Sou novato do Emacs e para a reformatação automática de meus códigos-fonte no Emacs, criei uma macro simples usando os comandos mark-whole-buffer e indent-region , mapeados para o atalho C-j:

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

No entanto, quando executado, a posição original do cursor é perdida e a nova posição do cursor é definida para o início do buffer. Existe alguma maneira de executar essa macro e retornar o cursor para sua posição anterior? Estou usando o GNU / Emacs 24.3 no Ubuntu 14.04.

Obrigado

    
por xwinus 09.08.2014 / 11:31

1 resposta

2

Em vez de usar uma macro, considere o uso de uma função. A função indent-region contém argumentos para o início e o fim da região. Assim, você pode avaliar (indent-region (point-min) (point-max)) para manipular todo o buffer. Você também pode usar uma função simples para fazer a mesma coisa:

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

Embora não seja necessário aqui, no futuro você pode precisar usar algo como save-excursion , o que o leva de volta ao ponto original.

    
por 09.08.2014 / 18:58