.emacs-my
changeset 1157 2036f6052212
parent 1156 736410a49d60
child 1158 89f674f09ca3
--- 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)