Question

Normalement, lorsque vous appuyez sur tab sur une ligne vide en mode python emacs, il parcourt les indentations de tabulation disponibles. Lorsque je tape l'onglet lorsque le point est au niveau de retrait le plus profond, j'obtiens le tampon pabbrev contenant les dernières options de meilleure correspondance. Est-ce que quelqu'un d'autre a ce problème, y a-t-il un moyen facile de le contourner sans écrire d'élisp?

EDIT: Trey, je veux continuer à faire fonctionner pabbrev en mode python et non pas le désactiver.

Disons donc qu'il y a 2 niveaux d'indentation, soit aucun, soit un niveau normalement s'il frappe l'onglet 3 fois le premier placerait le point à 4 espaces (ou quel que soit le retrait défini), le second à 0 espace et le troisième retour à 4 espaces.

Avec le mode pabbrev sur un retrait, la marque est placée à 4 espaces, le second fait apparaître un tampon pour la saisie semi-automatique. Cela ne devrait pas arriver s'il n'y a pas de lettres à gauche de mon propos. Est-ce que cela a plus de sens?

Était-ce utile?

La solution

À la lumière des exigences clarifiées, vous avez besoin de quelque chose dans ce sens. Je suis sûr que vous ne pouvez pas vous en sortir en écrivant un elisp. Ce qui est bien (IMO), c’est que cela devrait fonctionner pour tous les modes, pas seulement en mode python.

(defadvice pabbrev-expand-maybe (around pabbrev-expand-maybe-when-not-after-whitespace activate)
  "prevent expansion when only whitespace between point and beginning of line"
  (if (save-match-data
        (save-excursion
          (let ((p (point)))
            (string-match "^\\s-*<*>quot; (buffer-substring-no-properties (progn (beginning-of-line) (point)) p)))))
      (let ((last-command (if (eq last-command this-command) (pabbrev-get-previous-binding) last-command))
            (this-command (pabbrev-get-previous-binding)))
        (pabbrev-call-previous-tab-binding))
    ad-do-it))

Autres conseils

Comment s’agit-il d’une réponse tardive?

Cela devrait fonctionner immédiatement, grâce à un correctif de Trey. La reliure à onglet de la manière dont pabbrev.el est un peu méchante, mais que devez-vous faire si vous souhaitez une expansion rapide.

Pas d'élis? Bien sûr:

M-x pabbrev-mode

devrait le désactiver. Toutefois, si vous n’avez pas peur de couper / coller elisp, vous pouvez désactiver le mode pabbrev dans les tampons python:

(add-hook 'python-mode (lambda () (pabbrev-mode -1)))
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top