Created
October 9, 2013 14:32
-
-
Save tsloughter/6902256 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun smarter-move-beginning-of-line (arg) | |
"Move point back to indentation of beginning of line. | |
Move point to the first non-whitespace character on this line. | |
If point is already there, move to the beginning of the line. | |
Effectively toggle between the first non-whitespace character and | |
the beginning of the line. | |
If ARG is not nil or 1, move forward ARG - 1 lines first. If | |
point reaches the beginning or end of the buffer, stop there." | |
(interactive "^p") | |
(setq arg (or arg 1)) | |
;; Move lines first | |
(when (/= arg 1) | |
(let ((line-move-visual nil)) | |
(forward-line (1- arg)))) | |
(let ((orig-point (point))) | |
(back-to-indentation) | |
(when (= orig-point (point)) | |
(move-beginning-of-line 1)))) | |
;; remap C-a to `smarter-move-beginning-of-line' | |
(global-set-key [remap move-beginning-of-line] | |
'smarter-move-beginning-of-line) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment