(defun smart-beginning-of-line ()
"Move point to first non-whitespace character or beginning-of-line.
Move point to the first non-whitespace character on this line.
If point was already at that position, move point to beginning of line."
(interactive "^") ; Use (interactive) in Emacs 22 or older
(let ((oldpos (point)))
(back-to-indentation)
(and (= oldpos (point))
(beginning-of-line))))
(global-set-key [home] 'smart-beginning-of-line)
Je ne suis pas sûr de ce que smart end ferait. Avez-vous normalement beaucoup d'espaces blancs à la fin ?
Note : La principale différence entre cette fonction et celle de Robert Vukovic est que la sienne se déplace toujours vers le premier caractère non blanc à la première pression sur la touche, même si le curseur s'y trouvait déjà. Dans ce cas, la mienne se déplace vers la colonne 0.
Aussi, il a utilisé (beginning-of-line-text)
où j'ai utilisé (back-to-indentation)
. Ils sont très similaires, mais il y a quelques différences entre eux. (back-to-indentation)
se déplace toujours vers le premier caractère non blanc d'une ligne. (beginning-of-line-text)
se déplace parfois au-delà des caractères non blancs qu'il considère comme insignifiants. Par exemple, sur une ligne de commentaire, il se déplace vers le premier caractère du texte du commentaire, et non vers le marqueur de commentaire. Mais l'une ou l'autre de ces fonctions peut être utilisée dans l'une ou l'autre de nos réponses, selon le comportement que vous préférez.