diff -r 736410a49d60 -r 2036f6052212 .emacs-my --- a/.emacs-my Sat Aug 02 23:24:15 2014 +0300 +++ b/.emacs-my Sat Sep 06 13:09:08 2014 +0300 @@ -754,12 +754,21 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (message "key binding, short-keys") -(global-set-key [home] 'beginning-of-line) -(global-set-key [end] 'end-of-line) -(global-set-key [C-home] 'beginning-of-buffer) -(global-set-key [C-end] 'end-of-buffer) -(global-set-key [C-delete] 'kill-word) -(global-set-key [delete] 'delete-char) +(defun my-smart-beginning-of-line () + "Move point to beginning-of-line. If repeat command it cycle +position between `back-to-indentation' and `beginning-of-line'." + (interactive) + (if (and (eq last-command 'my-smart-beginning-of-line) + (= (line-beginning-position) (point))) + (back-to-indentation) + (beginning-of-line))) + +(global-set-key [home] 'my-smart-beginning-of-line) +(global-set-key [end] 'end-of-line) +(global-set-key [C-home] 'beginning-of-buffer) +(global-set-key [C-end] 'end-of-buffer) +(global-set-key [C-delete] 'kill-word) +(global-set-key [delete] 'delete-char) ;; (global-set-key [backspace] 'backward-delete-char-untabify) ; not work properly in *info* mode (global-set-key [f2] 'save-buffer)