39 votes

La maison intelligente en Emacs

Peut-on avoir un comportement intelligent pour la touche d'accueil dans Emacs ? Par intelligent, j'entends qu'au lieu d'aller au caractère numéro 0, elle devrait aller au premier caractère non-blanc, et aller à 0 à la deuxième pression, et revenir au premier caractère non-blanc à la troisième pression et ainsi de suite. Une fin intelligente serait également appréciable.

1voto

Bach Lien Points 670

Ma version : aller au début de la ligne visuelle, au premier espace non blanc, ou au début de la ligne.

(defun smart-beginning-of-line ()
    "Move point to beginning-of-line or first non-whitespace character"
  (interactive "^")
  (let ((p (point)))
    (beginning-of-visual-line)
    (if (= p (point)) (back-to-indentation))
    (if (= p (point)) (beginning-of-line))))
(global-set-key [home] 'smart-beginning-of-line)
(global-set-key "\C-a" 'smart-beginning-of-line)

Le site [home] et "\C-a" (control+a) :

  • Déplacez le curseur (point) au début de la ligne visuelle.
  • S'il est déjà au début de la ligne visuelle, il est déplacé vers le premier caractère sans espace de la ligne.
  • S'il est déjà là, déplacez-le au début de la ligne.
  • Pendant le déplacement, gardez la région ( interactive "^" ).

Ceci est pris de @cjm et @thomas ; puis j'ajoute le truc de la ligne visuelle. (Désolé pour mon anglais approximatif).

0voto

gavenkoa Points 6974

J'adapte le code de @Vucovic pour sauter à beggining-of-line d'abord :

(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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X