短いグーグル検索で良い答えが得られないので、ここで聞いてみます。
通常、現在のファイルをフォーマットしたいときは、次のようにします。
c-x h c-m-\
現在のファイルをフォーマットしますが、カーソル位置が失われます。たとえば、長いファイルを編集していて、現在157行目にいます。ファイルを再フォーマットすると、カーソルが1行目にジャンプしていることがわかりました。手動で157行目に移動する必要がありますが、これは便利ではありません。
どうすればいいですか?
Emacsでこのような問題を解決する一般的な方法は次のとおりです。
C-SPC C-SPC ...dowhatyouwant... C-u C-SPC
C-SPC C-SPCパーツは、マークリング上の現在の位置をプッシュし、次にCuC-SPCがその位置をマークリングからポップバックします。
この関数を使用して、1回のキー押下にバインドできます。
(defun indent-current-buffer ()
(interactive)
(indent-region (point-min) (point-max)))
私の.emacsから(http://tuxicity.se/emacs/elisp/2010/05/07/clean-up-buffer-or-region-in-emacs.htmlまたは同様のものから取得されているようです):
(defun clean-up-buffer-or-region ()
"Untabifies, indents and deletes trailing whitespace from buffer or region."
(interactive)
(save-excursion
(unless (region-active-p)
(mark-whole-buffer))
(untabify (region-beginning) (region-end))
(indent-region (region-beginning) (region-end))
(save-restriction
(narrow-to-region (region-beginning) (region-end))
(delete-trailing-whitespace))))
(global-set-key (kbd "C-c n") 'clean-up-buffer-or-region)
これはあなたが望むより少し多くのことをしますが、私は通常、機能の余分なビット(末尾の空白を非表示にして削除する)が便利だと思います。